2011-03-11 52 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