我使用PHP创建了一个登录函数,我在php类中有一个名为'$ loggedIn'的变量。当用户点击退出按钮时,如何将其设置为false?
答案 0 :(得分:3)
logout.php
的另一个页面,其中session_destroy();
或类似方法已执行,并将$loggedIn
的值设置为false logout.php
发送请求session_destroy();
或执行类似方法,并将$loggedIn
的值设置为false 销毁会话后,使用header('location:signin.php');
请注意,名称logout.php
或signin.php
只是为了清楚显示示例。
答案 1 :(得分:0)
您应该有一个用户登录的数据库,然后您应该检查数据库以确保用户名和密码是正确的(并且HASHED& SALTED)。那么你不应该使用$ loggedIn变量,你需要使用会话。
下面的代码是高度抽象的,并假设您了解数据库交互。 此页面将运行类似signin.php
的内容<?php
session_start();
auth()
{
//DB logic here that compares $_POST['<username_field_name>'] and hashMethod($_POST['<password_field_name>']) to a returned row from the database
//If it is valid return true
if(<db logic conditions here>){
return true;
}
}
if(isset($_POST['<username_field_name>']) && isset($_POST['<password_field_name>'])))
{
if(auth()){
$_SESSION['loggedIn'] = 'true';
}
}
else
{
//Call for login form here
}
完成后,您可以简单地销毁会话。 http://php.net/manual/en/function.session-destroy.php
此代码位于logout.php。
<?php
session_destroy();
header('location:signin.php')
这绝不是最好的身份验证!有许多因素需要担心,例如SQL注入,但这会为您提供一个核心工作系统。你真正应该做的是学习一个内置最佳实践认证系统的Zend或Laravel框架链接。
Laravel Secruity文档 http://laravel.com/docs/security
Zend Framework Auth docs http://framework.zend.com/manual/1.12/en/learning.multiuser.authentication.html
如果你刚刚学习,我推荐Laravel。