帮助修复此重定向问题

时间:2010-12-24 12:31:47

标签: php

在index.php上,我想重定向登录到home.php的用户ana还检查是否设置了cookie,如果cookie存储了正确的信息,则重定向它们。但问题是,如果用户保存了cookie并想要注销并转到索引页面,他就不能,因为索引页面将重新检查他保存的cookie并重新签名。请帮助:

<?php

include("checkcook.php");

function redirect() {
    header('location:home.php');
    die();
}

session_start();

if((isset($_COOKIE["jmuser"])) && (isset($_COOKIE["jmpass"]))){
    checkCookie($_COOKIE["jmuser"], $_COOKIE["jmpass"]);
    } 

if(isset($_SESSION['username'])){
            redirect();
        }
?>

哦,这是checkcook.php

<?php
    function checkCookie($username, $password){

        $conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
        mysql_select_db('jmtdy', $conn) or die(mysql_error());

        $result=mysql_query("select * from users where username = '$username'");
        if($result != false){

            $username=mysql_real_escape_string($username);
        $password=mysql_real_escape_string($password);

            $dbArray=mysql_fetch_array($result);
            $dbArray['password']=mysql_real_escape_string($dbArray['password']);
            $dbArray['username']=mysql_real_escape_string($dbArray['username']);

        if(($dbArray['password'] != $password ) || ($dbArray['username'] != $username) || ($dbArray['active'] != '1')){
                setcookie("jmuser","",time()-3600);
                setcookie("jmpass","",time()-3600);
                session_unset($_SESSION['username']);
                session_unset($_SESSION['password']);
                return;
                }
                $_SESSION['username']=$username;
                return true;
               }

            else{

                setcookie("jmuser","",time()-3600);
                setcookie("jmpass","",time()-3600);
                session_unset($_SESSION['username']);
                return;
            }
        }

?>          

这是我的退出代码。但是,如果我销毁cookie,那么用户每次访问网站时都需要登录?我不希望这样。

<?php

function redirect() {
    header('location:index.php');
    die();
} 
session_start();
session_destroy();
redirect();

?>

1 个答案:

答案 0 :(得分:1)

简单的解决方案,只需在他们退出时删除

//sets the expiration time to -3600 seconds, i.e. 1 hour in the past

setcookie ("AnExampleCookie", "", time() - 3600);

或者你是说,如果他们想从 home.php注销,他们不能因为它重定向?如果是这种情况,那么可以通过设置计数器来实现一种知道用户是否已经从home.php重定向一次的方法。

好的,你现在让问题更清楚了

你说

  

“但是,如果我销毁cookie,那么每次用户访问网站时都需要登录?我不希望这样。”

但用户是不是选择退出?

  

“如果用户保存了cookie并想要注销并转到索引页面”

所以我仍然说,只需在他们登出时删除Cookie ,然后再访问home.php页面