Firefox 检测到该服务器正在将此地址的请求循环重定向。     此问题可能是因为禁用或拒绝 Cookie 导致。

今天在做phpcookie的实验,按照例子在做,一切都没有问题,就是账户退出上出现了问题。

问题:点击退出后,从logout.php 回到 login.php 这个页面。

在logout.php这个页面中,主要是删除cookie:代码如下

<?php

/**

 * 

 * logout.php

 */

 //删除userName和userId两个cookie:使cookie的有效期早于现在

 setcookie("userName",time()-1);

 setcookie("userId",time()-1);

 //跳回login界面

 header("Location:login_bac.php");

 //header(sprintf("Location:http://%s/php/34/code/login_bac.php",$_SERVER["HTTP_HOST"]));

 ?>

但是从logout.php跳转到login.php时,firefox报错: Firefox 检测到该服务器正在将此地址的请求循环重定向。      此问题可能是因为禁用或拒绝 Cookie 导致。

解决方法如下:将 logout.php中的 

 setcookie("userName",time()-1); 改为 setcookie("userName","")

 setcookie("userId",time()-1);改为 setcookie("userId","")

就可以了


原因是: 如果把cookie的失效改成当前时间之前,那么在我的login.php中,我需要访问这个cookie,但是firefox34 中,并不会把这个cookie给删除,我查看了 firefox中 cookie部分,发现,这个cookie只会在关闭浏览器后,才被删除。那这边就会出现问题。在我的login.php中,我访问了一个过期的cookie,所以firefox才会报刚才的错误.

接下来,贴上login.php的代码:这里我使用empty来判断userId 这个cookie是否有效

 if(!empty($_COOKIE["userId"]))

    {

        

       

        $link = mysql_connect($dbcfg["host"],$dbcfg["uname"],$dbcfg["upass"]);

        if(!$link){

            die("连接数据库失败");

        }

        mysql_select_db($dbcfg["db"]);

        $sql =  sprintf("SELECT userId,userName,userPass FROM it_users where userId = %s",$_COOKIE["userId"]);

        $re = mysql_query($sql);

        if(mysql_num_rows($re)==1){

            $row = mysql_fetch_assoc($re);

            setcookie("userName",$row["userName"]);

            header("Location:http://".HOST."/php/34/code/success_bac.php");    

        }

        else{

            echo("查询失败,请重新登录");

            setcookie("userId",time()-10000);

            setcookie("userName",time()-10000);

            header("Location:http://".HOST."/php/34/code/login_bac.php");

            

        }

        mysql_close($link);

        

        

    }



你可能感兴趣的:(PHP,cookie)