PHP注销按钮点击


PHP Logout on button click

我使用PHP制作了一个登录函数,我在PHP类中有一个名为'$loggedIn'的变量。当用户单击注销按钮时,如何将其设置为false ?

  1. 重定向到另一个名为logout.php的页面,其中session_destroy();或类似的方法被执行,并将$loggedIn的值设置为false
  2. 添加一个ajax调用发送请求到logout.php,其中session_destroy();或类似的方法被执行,并将$loggedIn的值设置为false

在销毁会话时,使用header('location:signin.php');将用户重定向到主页/登录页面

请注意logout.phpsignin.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