2011-03-11 58 views
0

我有一個登錄腳本,我記錄用戶失敗過多。在我的調試目的中,我會在第一次嘗試失敗後記錄日誌。include(「文件」)後設置一個cookie

我通過訪問它測試了代碼。我將文件命名爲fail_cookie.php。當我從瀏覽器訪問它時,它將cookie設置得很好。但是,如果我是一個登錄表單稱爲login.ws上,我有這樣的代碼:

if (!isset($_COOKIE["login"])) { 
     logUser($_POST['username'], $_POST['password'], time(), $_SERVER['REMOTE_ADDR']); 
     include "fail.ws"; 
    } 

裏面fail.ws是我設置的fail_cookie.php。我將其包含在<head> .. .. <?php include("fail_cookie.php"); ?> </head>

當我通過login.ws重定向到fail.ws時,cookie從未設置。

此代碼用於在我的上一個主機上工作,但它不適用於我的當前主機。是我的主人是問題還是我的?如果是我的,有人可以向我提一些建議嗎?

謝謝。

+1

僅適用於我的腦海裏......爲什麼** ** fail.ws?和[setcookie](http://php.net/manual/de/function.setcookie.php)不工作?你能顯示你設置cookie的行嗎? – Stony 2011-03-11 13:21:22

+0

[設置一個cookie後標題(「位置...」)](http://stackoverflow.com/questions/5273363/setting-a-cookie-after-headerlocation) – David 2011-03-11 13:22:03

+0

可能的重複我想知道我是如何重複的,我將刪除其他。 – Kyle 2011-03-11 13:23:12

回答

2

啓用output_bufferingphp.ini。您可以在php文件向用戶發送輸出後設置cookie。 - 事實上輸出將被緩衝,並在您的PHP腳本結束後發送。

您還可以啓用這個在.htccess文件有:

php_flag output_buffering on 
+0

真的嗎?哇,我認爲這是我的問題哈哈我正在抓我的頭髮,想知道我做錯了什麼。非常感謝,我會讓他們啓用它。 – Kyle 2011-03-11 13:22:14

+0

那是你的問題。在發送標題之前輸出內容(Cookie爲標題)。輸出緩衝只會在將所有內容發送到服務器之前將所有內容寫入PHP內存 - 因此會增加內存使用量。 – ThiefMaster 2011-03-11 13:23:03

+0

@ThiefMaster,我該如何解決這個問題或者以正確的方式去做?感謝您的意見。 – Kyle 2011-03-11 13:24:30