2010-10-31 37 views
0

这是我在logout.php代码Cookie不能正常工作的

<?php 
if(isset($_COOKIE['cookie-username']) || isset($_COOKIE['cookie-password'])) { 

    setcookie("cookie-username", NULL, time()-60*60*24*100); 
    setcookie("cookie-password", NULL, time()-60*60*24*100); 
} 
    header('Location: ../login') ; 
    ?> 

我可以证实饼干存在,如果我做一个while循环,我得到
致命错误:允许内存大小的134217728字节耗尽(试图分配79个字节)/home/ios/public_html/logout.php线

这意味着它不能删除第e cookies ... 我已经做了大量的谷歌搜索,但我不明白为什么它不会删除所述cookie ...

帮助? 由于事先

编辑: 证明饼干: http://cl.ly/1c31120de4b722518b05

创建的cookie:

if (isset($_POST['submit'])) { 

     try {   
      if (!isset($_POST['username']) || !isset($_POST['password']) || trim($_POST['username']) =='' || trim($_POST['password']) =='') {    throw new Exception('All Fields Are Required!'); 
      } 
      $username = strtolower($_POST['username']); 
      $password = md5(strtolower($_POST['password'])); 

      include('classes/config.php'); 

         [SQL REMOVED] 
      foreach ($pdo->query($sql) as $row) { 
       $dbPassword = $row['password']; 
      } 

      if (!isset($dbPassword)) { 
       throw new Exception('Invalid Username or Password!'); 
      } 

      if ($dbPassword == $password) { 
       if (!isset($_COOKIE['cookie-username']) || !isset($_COOKIE['cookie-password'])){ 

        $days = 1; 

        if (strtolower($_POST['remember']) == 'on') { 
         $days = 30; 
        } 


        setcookie("cookie-username", $username, time()+60*60*24*$days, "/"); 
        setcookie("cookie-password", $password, time()+60*60*24*$days, "/"); 

       } 

        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=../index">';  
      } 
      else if ($dbPassword != $password) { 
       throw new Exception('Invalid Username or Password!'); 
      } 
     } 

      catch (Exception $e) { 
       $exception = $e->getMessage(); 
     } 
    } 
+0

好吧,它永远不会退出while循环,所以cookies永远不会被删除。所以我99.99999999999999999%肯定它在那里。 – willium 2010-10-31 10:45:13

+0

..这就是致命错误的原因。见@ meze的回答 – 2010-10-31 10:48:16

回答

1

删除while循环。 setcookie不影响$ _COOKIE。

如果没有帮助,试试这个:

<?php 
    setcookie("cookie-username", NULL, time()-60*60*24*100, "/", ".yourdomain.com"); 
    setcookie("cookie-password", NULL, time()-60*60*24*100, "/", ".yourdomain.com"); 
    header('Location: ../login') ; 
?> 

PS:另外这是一个坏主意来存储登录/密码在cookie中,用于认证目的,它是更好地存储标志会话

+0

+1这就是它。它实际上是一个无限循环,填充内存直到崩溃。 – 2010-10-31 10:47:56

+0

好吧,所以它的无限,现在我改回它只是一个if语句,它仍然不能删除cookie。 – willium 2010-10-31 10:49:28

+0

它变成了一个无限重定向循环,并且cookies不会删除。 – willium 2010-10-31 10:51:14

0
<? 
setcookie('cookie-username', 0, -1); 
setcookie('cookie-password', 0, -1); 
header('Location: example.com/path/login'); 
?> 
  1. 此功能不扔东西,然后try不是可用您。
  2. $_COOKIES只有在脚本启动时才会刷新,如果您擦除了cookie,您将在下一次刷新结果中看到。
+0

同样的事情发生在那。 – willium 2010-10-31 10:44:35