我使用PHP制作了一个登录函数,我在PHP类中有一个名为'$loggedIn'的变量。当用户单击注销按钮时,如何将其设置为false ?
- 重定向到另一个名为
logout.php
的页面,其中session_destroy();
或类似的方法被执行,并将$loggedIn
的值设置为false - 添加一个ajax调用发送请求到
logout.php
,其中session_destroy();
或类似的方法被执行,并将$loggedIn
的值设置为false
在销毁会话时,使用header('location:signin.php');
将用户重定向到主页/登录页面
请注意logout.php
或signin.php
的名称只是为了使示例更清楚。
你应该有一个用户登录的数据库,然后你应该检查数据库,以确保用户名和密码是正确的(和哈希& &;咸)。那么你不应该使用$loggedIn变量,你需要使用sessions。
下面的代码是高度抽象的,并假设具有数据库交互的知识。该页面将以类似signing .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注入,但这给了您一个核心的工作系统。你真正应该做的是学习一个框架link Zend或Laravel,它们已经内置了最佳实践的身份验证系统。
Laravel security文档http://laravel.com/docs/security
Zend Framework Auth docshttp://framework.zend.com/manual/1.12/en/learning.multiuser.authentication.html
如果你只是在学习,我推荐Laravel