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        
时间: 2024-10-13 15:16:35

yii2 登录的相关文章

yii2登录流程

今天研究了下yii2 的登陆流程 在数据库中建立user表 CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `username` varchar(255) NOT NULL COMMENT '用户名', `auth_key` varchar(32) NOT NULL COMMENT '自动登录key', `password_hash` varchar(255) NOT NULL COMMENT

Yii2 登录报错

当用数据库登录系统报如下错误时 PHP Recoverable Error – yii\base\ErrorException Argument 1 passed to yii\web\User::login() must be an instance of yii\web\IdentityInterface, instance of app\modules\admin\models\AdminUser given, called in /home/ser/web_root/sun/module

yii2 登录、退出、自动登录

自动登录的原理很简单.主要就是利用cookie来实现的在第一次登录的时候,如果登录成功并且选中了下次自动登录,那么就会把用户的认证信息保存到cookie中,cookie的有效期为1年或者几个月. 在下次登录的时候先判断cookie中是否存储了用户的信息,如果有则用cookie中存储的用户信息来登录, 配置User组件 首先在配置文件的components中设置user组件 'user' => [            'identityClass' => 'app\models\User', 

Yii2 登录Model

<?php namespace app\models; use Yii; class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface { public $auth_key='sun'; public $access_token='sun'; /** * @inheritdoc */ public static function tableName() { return '{{%user}}'; } /

Yii2系列教程四:实现用户注册,验证,登录

上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做.本期的用户注册和登录,我会使用一个很棒的composer package :dektrium/yii2-user,下面就开始我们的故事吧. 用户的注册和登录 在现在的Web应用中,几乎每一个应用都会需要用户注册,不管是使用的第三方还是自建的注册登录系统,我们都需要通过某些表单来

yii2 的登录注册 轮子

//利用到了yii2 框架之中的验证规则 进行判定而已 也不是很高深的东西  但是 使用框架自身的轮子 会有安全性能的隐患 1注册reg controller 中 我都以admin 为例子 public function actionAdd() { $model = new Admin(); if (Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($re=($model->reg($p

yii2.0用户登录,退出判断(摘录)

文章来源:http://blog.sina.com.cn/s/blog_88a65c1b0101ix13.html 判断用户是否登录 在 Yii2.0 里面,判断用户是否已经登录,我们用下面的代码即可 Yii::$app->user->isGuest; 示例:如果用户已经登录,直接调用 goHome() 方法 if (!\Yii::$app->user->isGuest) { return $this->goHome(); } 获取登录用户名 在 yii2.0 里面,获取登录

YII2 实现登录时候修改最新登录时间

YII2 实现登录时候修改最新登录时间 YII2保存最新登录时间主要技巧:为 EVENT_AFTER_LOGIN 事件绑定一个方法,在方法中保存最新时间 public function login() { if ($this->validate()) { Yii::$app->user->on(User::EVENT_AFTER_LOGIN,function($event){ $admin=$event->identity; $admin->last_login_time=t

yii2微博第三方登录

微博登录是最常用的第三方账号登录之一.由于其网站用户量大,可操作接口功能多,所以受到很多开发者的青睐. 既然是第三方,如果想使用它们的账号进行登录,那么第一步就应该申请一个开发账号. 前面啰嗦两句,这里有两个条件是硬性的,否则将影响你的开发. 微博账号,这个应该都有. 域名和服务器,也就是说你要有你自己的网站.不过为公司开发就方便多了. 申请开发账号 首先去微博开放平台:http://open.weibo.com/connect,点击立即接入,填写一个表单,验证一下网站就OK了 之后你在我的应用