php 进入后台先登录,php后台如何避免用户直接进入方法实例

1)创建BaseController控制器继承Controller(后台的一切操作要继承BaseController):

在BaseController里面添加:

public function checkLogin() {

if (Yii::app()->authority->isLogin() == Yii::app()->authority->getStatus('NOTLOGIN')) {

$url = $this->createUrl('user/login');

if (Yii::app()->request->isPostRequest && Yii::app()->request->isAjaxRequest) {

echo json_encode(array('code' => -101, 'message' => '用户未登录。', 'callback' => 'window.location="' . $url . '";'));

} else if (Yii::app()->request->isAjaxRequest) {

echo '';

} else {

$this->redirect($url);

}

exit;

}

return true;

}

在components目录下创建Authority.php文件:

/**

* 权限检查组件

*/

class Authority extends CComponent {

private $NOTLOGIN = -1;

private $FAILED = -2;

private $PASS = 1;

public function init() {

}

/**

* 检查是否登陆

* @return boolean

*/

function isLogin() {

return isset(Yii::app()->session['user']) ? $this->PASS : $this->NOTLOGIN;

}

/**

* 获取状态值

* @param string $name

* @return int

*/

public function getStatus($name){

return $this->$name;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里提供一个基于 HTML 和 PHP后台登录实例,包含谷歌动态验证码的实现: ```html <!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> <?php // 引入pyotp库 require_once('pyotp.php'); // 开启session session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { // 获取用户提交的表单数据 $username = $_POST['username']; $password = $_POST['password']; $verify_code = $_POST['verify_code']; // 获取session中保存的秘钥 $secret_key = $_SESSION['secret_key']; // 根据秘钥生成动态验证码 $totp = new \OTPHP\TOTP($secret_key); $dynamic_code = $totp->now(); // 判断动态验证码是否正确 if ($verify_code == $dynamic_code) { // 此处省略用户名密码验证过程,如果验证通过则跳转后台首页 echo 'Login success!'; } else { // 动态验证码输入错误,返回登录页面并提示错误信息 echo '<p style="color: red;">动态验证码输入错误!</p>'; } } else { // 生成一个随机的32位秘钥 $secret_key = \OTPHP\TOTP::randomBase32(); // 将秘钥存储到session中 $_SESSION['secret_key'] = $secret_key; // 根据秘钥生成动态验证码 $totp = new \OTPHP\TOTP($secret_key); $dynamic_code = $totp->now(); // 返回包含动态验证码的登录页面 echo '<form action="" method="POST">'; echo '<input type="text" name="username" placeholder="Username"><br>'; echo '<input type="password" name="password" placeholder="Password"><br>'; echo '<input type="text" name="verify_code" placeholder="Dynamic code"><br>'; echo '<img src="' . $totp->getQrCodeUri() . '" alt="Google Authenticator"><br>'; echo '<input type="submit" value="Login">'; echo '</form>'; } ?> </body> </html> ``` 在上面的代码中,我们使用了 PHP 语言和 pyotp 库来生成谷歌动态验证码。在每次登录页面加载时,我们都会生成一个新的秘钥,并将其存储在 session 中。同时,我们使用秘钥生成动态验证码,并将其返回到登录页面。当用户提交表单时,我们会获取用户输入的动态验证码,并根据存储在 session 中的秘钥重新生成动态验证码进行比较。如果动态验证码输入正确,则允许用户登录后台;否则,提示用户重新输入动态验证码。 需要注意的是,上面的代码只是一个简单的示例,实际应用中需要进行更加严格的用户验证和安全措施,例如限制动态验证码的有效时间和使用次数等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值