1

我正在尝试创建一个 PHP 注销脚本,但是,一旦我实现它,页面就会在登录后被重定向到该页面。这是代码:

连接.php

<?php 
    session_start();
    $link = mysql_connect("localhost", "database_name", "database_pass") or die(mysql_error());
    mysql_select_db("database_name") or die(mysql_error());

    if(isset($_COOKIE['username'])) 
             $_SESSION['username'] = $_COOKIE['username'];
 ?>  

注销.php

<?php
    include("connect.php");
    session_start();
    session_destroy();
    $username = $_SESSION['username'];
setcookie($username, time()-3600);  
    header("Location: index.php");
    die;    
?> //immediately after here, instead of going to index.php(the login page), it goes straight to the page that would appear after if the user had logged in(control_panel.php). 

有任何想法吗?谢谢!

4

2 回答 2

2

看看这个页面:http ://blog.ircmaxell.com/2011/08/security-review-creating-secure-php.html

它完全通过“创建安全的 PHP 登录脚本”。您当前的解决方案存在许多安全问题。

于 2012-07-23T06:02:53.557 回答
1

我猜你的代码是错误的,问题出在这里..

在您的 logout.php 中,您在取消设置会话后使 cookie 过期,您的 cookie 不会过期。

在 connect.php 中,您正在使用此条件再次设置会话,它设置是因为 cookie 仍在用户的浏览器中

if(isset($_COOKIE['username'])) 
            $_SESSION['username'] = $_COOKIE['username'];

所以不要这样做:

setcookie($username, time()-3600);

做这个 :

 setcookie($username, "", time()-3600);
于 2012-07-23T06:07:23.533 回答