yii2 登录
1 <?php 2 3 namespace app\addons\food\stores\models; 4 use yii\db\ActiveRecord; 5 use Yii; 6 class User extends ActiveRecord 7 { 8 public $username; 9 public $password; 10 public function rules() 11 { 12 return [ 13 // username and password are both required 14 [['username', 'password','email'], 'required','message'=>'不能为空'], 15 //[['username'], 'unique','message'=>'{attribute}已经被占用了'], 16 ['password', 'validatePass'], 17 ]; 18 } 19 20 public function validatePass() 21 { 22 if (!$this->hasErrors()) { 23 $data = self::find()->where('username = :username and password = :password', [":username" => $this->username, ":password" => md5($this->password)])->one(); 24 if (is_null($data)) { 25 $this->addError("adminpass", "用户名或者密码错误"); 26 } 27 } 28 29 } 30 31 public function login($data) 32 { 33 //$this->scenario = "login"; 34 if ($this->load($data) && $this->validate()) { 35 //做点有意义的事 36 //$lifetime = $this->rememberMe ? 24*3600 : 0; 37 $lifetime = 3600*24; 38 $session = Yii::$app->session; 39 session_set_cookie_params($lifetime); 40 $session['admin'] = [ 41 'username' => $this->username, 42 'isLogin' => 1, 43 ]; 44 // ip2long(Yii::$app->request->userIP) 45 //$userIP = Yii::$app->request->userIP; 46 $userIP ='180.96.11.189'; 47 $data = $this->post($userIP); 48 $this->updateAll(['logintime' => time(), 'loginip' => $ip], 'username = :username', [':username' => $this->username]); 49 return (bool)$session['admin']['isLogin']; 50 } 51 return false; 52 } 53 54 /* 55 *根据新浪IP查询接口获取IP所在地 56 */ 57 function getIPLoc_sina($queryIP){ 58 $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP; 59 $ch = curl_init($url); 60 //curl_setopt($ch,CURLOPT_ENCODING ,'utf8'); 61 curl_setopt($ch, CURLOPT_TIMEOUT, 10); 62 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 63 $location = curl_exec($ch); 64 $location = json_decode($location); 65 curl_close($ch); 66 67 $loc = ""; 68 if($location===FALSE) return ""; 69 if($location < 0) return ""; 70 if (empty($location->desc)) { 71 $loc = $location->province.'-'.$location->city.'-'.$location->district.'-'.$location->isp; 72 }else{ 73 $loc = $location->desc; 74 } 75 return $loc; 76 } 77 78 public function post($ip,$https=true,$method='get',$data=null) 79 { 80 $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip; 81 //1.初始化url 82 $ch = curl_init($url); 83 //2.设置相关的参数 84 //字符串不直接输出,进行一个变量的存储 85 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 86 //判断是否为https请求 87 if($https === true){ 88 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 89 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 90 } 91 //判断是否为post请求 92 if($method == 'post'){ 93 curl_setopt($ch, CURLOPT_POST, true); 94 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 95 } 96 //3.发送请求 97 $str = curl_exec($ch); 98 //4.关闭连接 99 curl_close($ch); 100 //返回请求到的结果 101 $location = json_decode($str); 102 return $location->country; 103 } 104 105 }
1 <?php 2 3 namespace app\addons\food\stores\controllers; 4 5 use yii\web\Controller; 6 use app\addons\food\stores\models\User; 7 use Yii; 8 /** 9 * Default controller for the `stores` module 10 */ 11 class DefaultController extends Controller 12 { 13 /** 14 * Renders the index view for the module 15 * @return string 16 */ 17 public $layout = false; 18 public function actionIndex() 19 { 20 $this->layout = "layout2"; 21 $model = new User(); 22 if (Yii::$app->request->isPost) { 23 $post = Yii::$app->request->post(); 24 if ($model->login($post)) { 25 $this->redirect(['default/test']); 26 Yii::$app->end(); 27 } 28 //var_dump($_POST);die; 29 //var_dump($this->username); 30 } 31 //$a = User::findOne(1); 32 //var_dump($a); 33 return $this->render('index',[ 34 'model' => $model 35 ]); 36 } 37 38 public function actionTest() 39 { 40 echo 'test'; 41 } 42 }
1 <?php 2 3 /* @var $this yii\web\View */ 4 /* @var $form yii\bootstrap\ActiveForm */ 5 /* @var $model \common\models\LoginForm */ 6 7 use yii\helpers\Html; 8 use yii\bootstrap\ActiveForm; 9 10 $this->title = 'Y+后台管理系统'; 11 $this->params['breadcrumbs'][] = $this->title; 12 ?> 13 14 <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> 15 16 <?= $form->field($model, 'username')->textInput(['autofocus' => true])->label('用户名') ?> 17 18 <?= $form->field($model, 'password')->passwordInput()->label('密码') ?> 19 <?= $form->field($model, 'email')->label('邮箱') ?> 20 <div class="form-group"> 21 <?= Html::submitButton('登录', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> 22 </div> 23 24 <?php ActiveForm::end(); ?> 25