单击按钮上的PHP注销

时间:2014-07-29 15:26:07

标签: php html

我使用PHP创建了一个登录函数,我在php类中有一个名为'$ loggedIn'的变量。当用户点击退出按钮时,如何将其设置为false?

2 个答案:

答案 0 :(得分:3)

  1. 重定向到名为logout.php的另一个页面,其中session_destroy();或类似方法已执行,并将$loggedIn的值设置为false
  2. 添加ajax调用以向logout.php发送请求session_destroy();或执行类似方法,并将$loggedIn的值设置为false
  3. 销毁会话后,使用header('location:signin.php');

    将用户重定向到首页/登录页面

    请注意,名称logout.phpsignin.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。