2019.01.11yii2 login的流程

1.frontend/controllers/SiteController.php

public function actionLogin()
{


    if (!Yii::$app->user->isGuest) {//判断user是否是客户
        return $this->goHome();//yii底层的东西//如果不是,返回首页home  http://y2aa-frontend.test/index.php
    }

    $model = new LoginForm();//实例化common/models/LoginForm.php 的LoginForm类
    if ($model->load(Yii::$app->request->post()) && $model->login()) {
        //获取登录页面表单提交的信息post,login:登录方法 common/models/LoginForm.php/Login
        return $this->goBack();//将浏览器重定向到上次访问的页面。(即首页)(登录成功)
    } 
else {//否则:没有获取到登录提交信息,或者登录提交《$model->login()》方法失败  (登录失败后者首次打开登录页面)
        $model->password = '';//密码赋值为空common/models/LoginForm.php 中定义的局部变量
        return $this->render('login', [//返回到登录页面frontend/view/login.php
            'model' => $model,
        ]);
    }
}

2.common/models/LoginForm.php 

public function login()
{
    if ($this->validate()) {//执行数据验证,yii底层的东西。验证成功,
        return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
        //返回:yii底层的user->login用户登录,登录成功,即返回首页;$this->getUser()获取用户名;
    }
    
    return false;//如果不执行验证的话,返回false
}

3.common/models/LoginForm.php 

4.

5.流程:登录页面显示及验证,登录成功返回首页,获取登录提交信息失败或者登录失败返回登录页面。

http://y2aa-frontend.test/index.php?r=site%2Flogin------》(判断是不是客户,不是的话,返回home首页;是的话继续执行)

页面显示-》没有获取到用户信息且没有提交信息-》else-》显示登录页面。

---》填写用户信息--》提交--》(验证填写信息-》提交-》返回网站home首页)成功;

                                              (验证信息失败或者提交失败-》返回登录页面)。

流程图:

frontend/controllersSiteController.php----------->view/login.php(页面显示)

                   actionLogin()

                            |

       common/models/LoginForm.php

                       Login()

。。。

`console.php`是Yii框架中的一个命令行脚本,用于执行各种命令和任务,如数据库迁移、生成代码等。在Yii2中,`console.php`被用于运行控制台应用程序,这些应用程序通常用于处理后台任务、定时任务、计划任务等。 在Yii2中,您可以使用`yii`命令来运行`console.php`脚本,如下所示: ``` php /path/to/your/yii-application/yii <command> ``` 其中,`/path/to/your/yii-application/`是您的Yii应用程序的路径,`<command>`是要执行的命令。例如,要运行数据库迁移命令,可以使用以下命令: ``` php /path/to/your/yii-application/yii migrate ``` 除了运行命令,您还可以使用Yii2的Console应用程序来设置定时任务。定时任务是指在指定的时间间隔内自动执行的任务。要创建定时任务,您需要执行以下步骤: 1. 创建一个继承自`yii\console\Controller`类的控制器,该控制器将处理定时任务的逻辑。 2. 在`console/config/main.php`配置文件中配置一个名为`cron`的组件,该组件将设置定时任务的时间表。 3. 在服务器上设置一个计划任务(cron job),以在指定的时间间隔内运行Yii2的console应用程序。 下面是一个简单的示例,演示如何使用Yii2的Console应用程序设置定时任务: 1. 创建一个名为`TestController`的控制器,用于处理定时任务的逻辑: ```php <?php namespace app\commands; use yii\console\Controller; class TestController extends Controller { public function actionIndex() { echo "This is a test command\n"; } } ``` 2. 在`console/config/main.php`配置文件中配置一个名为`cron`的组件,该组件将设置定时任务的时间表: ```php <?php return [ // ... 'components' => [ // ... 'cron' => [ 'class' => 'yii\console\CronController', 'schedule' => [ '* * * * *' => ['test/index'], // 每分钟执行一次TestController的index动作 ], ], ], ]; ``` 在上面的配置中,我们创建了一个名为`cron`的组件,它是`yii\console\CronController`的一个实例。`'schedule'`属性包含一个时间表数组,该数组指定了要运行的控制器操作和它们的执行时间。 在上面的示例中,我们设置了一个时间表,每分钟执行一次`TestController`控制器的`index`操作。 3. 在服务器上设置一个计划任务(cron job),以在指定的时间间隔内运行Yii2的console应用程序。 在Linux环境中,您可以使用`crontab`命令来设置计划任务。要设置一个计划任务,您需要打开终端并输入以下命令: ``` crontab -e ``` 这将打开一个文本编辑器,在其中输入以下内容: ``` * * * * * /usr/bin/php /path/to/your/yii-application/yii cron/run >> /dev/null 2>&1 ``` 其中,`/usr/bin/php`是PHP解释器的路径,`/path/to/your/yii-application/`是您的Yii应用程序的路径。`cron/run`是您要运行的控制器操作。`>> /dev/null 2>&1`将输出重定向到`/dev/null`,以避免将输出写入日志文件。 这将在每分钟运行一次Yii2的Console应用程序,并执行指定的控制器操作。 希望这个示例可以帮助您理解如何使用Yii2的Console应用程序设置定时任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值