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        

 

posted @ 2017-08-24 11:39  6671  阅读(348)  评论(0编辑  收藏  举报