2012-03-30 83 views
0

用戶登錄並驗證密碼後,我需要將他的用戶名存儲在cookie中。我試圖簡單地添加setcookie()時,在看起來像if ($password_match == $user_login_password) {...的部分中成功驗證密碼,但由於某種原因,它似乎無法正常工作。當用戶使用正確的密碼/用戶名成功登錄時,我無法設置Cookie。是否有某些原因導致您無法在函數中設置cookie?PHP setcookie問題

public function write($p) { 

    if ($_POST['user_login_username']) 
     $user_login_username = mysql_real_escape_string($_POST['user_login_username']); 

    if ($_POST['user_login_password']) 
     $password = mysql_real_escape_string($_POST['user_login_password']); 
     $password .= 'some_Salt'; 
     $user_login_password = hash('sha256', $password); 
    } elseif ($user_login_username && $user_login_password) { 
     $q = "SELECT * FROM users WHERE username = '$user_login_username'"; 
     $r = mysql_query($q); 

     if ($r !== false && mysql_num_rows($r) > 0) { 
      while ($a = mysql_fetch_assoc($r)) { 
      $password_match = stripslashes($a['password']); 
      } 

      if ($password_match == $user_login_password) { 

       echo $this ->display_login('Correct!'); 

       setcookie('user','some_username'); 

      } else { 
       echo $this ->display_login('Wrong Password!'); 
      } 

     } else { 
      echo $this ->display_login('That username does not exist.'); 
     } 



     return; 

    } else { 
     return false; 
    } 
    } 
+0

你究竟如何確定它不工作? – deceze 2012-03-30 04:40:19

+0

嘗試將cookie的路徑設置爲'/'? – animuson 2012-03-30 04:41:11

+1

這看起來很危險。如果用戶發現管理員的用戶名是什麼?用戶只是更改cookie,而bam,他以管理員身份登錄。 – kijin 2012-03-30 04:43:01

回答

0

啊,我明白了。協議限制與setcookie,我試圖設置它後面的標籤。感謝所有看過的人,我應該更好地閱讀文檔。抱歉!

+0

在評論中發佈您的回覆,而不是作爲潛在答案。 – 2012-03-30 04:59:46

+0

對不起 - 我的印象是,即使原始海報出現問題時,問題的解決方案也應作爲答案發布 - 這樣未來的用戶將能夠輕鬆地看到解決方案是什麼。 – Thomas 2012-03-30 05:00:57

+0

好的!我不知道這個規則 – 2012-03-30 05:02:25

1

我這個做那個方式:

function mysetcookie($name, $value, $timestamp=null, $directory='/') { 
    return setcookie($name, $value, time()+$timestamp, $directory); 
} 

而且我可以用mysetcookie()代替setcookie() :)而且我認爲閱讀本:

http://php.net/manual/en/function.setcookie.php