PHP Cookie未在表单提交中设置

时间:2012-08-09 21:48:23

标签: php forms post cookies

所以这是交易。我有一个登录表单,我可以使用Jquery设置cookie,但我的雇主希望用PHP完成。所以我试图这样做。

这是我的表格

<?php if(!isset($_POST['commit'])){
     echo "<a id='loginbtn' class='btn dropdown-toggle loginbtn' href='#' data-toggle='dropdown'>Sign in <strong class='caret'></strong></a>";
     echo "<div id='loggedout' class='dropdown-menu' style='padding: 15px; padding-bottom: 0px;'>";
         echo "<form name='LoginForm' id='LoginForm' action=''  method='post' accept-charset='UTF-8'>";
             echo "<input id='user_username' style='margin-bottom: 15px; height:25px;' type='text' name='username' size='30' value='Username' />";
             echo "<input id='user_password' style='margin-bottom: 15px; height:25px;' type='password' name='password' size='30' value='********' />";
             echo "<input class='btn btn-primary' id='login' style='clear: left; width: 100%; height: 32px; font-size: 13px;' type='submit' name='commit' value='Sign In' />";
         echo "</form>";
     echo "</div>";
     }
?>

当我尝试设置cookie时,它看起来像这样:

<?php
    if(isset($_POST['commit'])){
       $username= $_POST["username"];
       setcookie("TestCookie", $username, time()+3600, '/', 'mydomain.com');
    }
?>

    <!DOCTYPE html>
    <html class='wf-franklingothicurwcond-n5-active wf-franklingothicurwcond-n7-active wf-active' lang='en'>

我,有一次,将$ username变量设为全局并将其输出到页面上,因此我知道这是有效的,但由于某种原因,cookie不会设置。

非常感谢任何帮助:)

编辑:

不知道它是否有任何区别,但我也在使用Bootstrap

2 个答案:

答案 0 :(得分:0)

看起来好像是使用setcookie()方法在PHP中正确设置它。我的第一个猜测是服务器和当地时间之间可能存在差异。

也许这个cookie一旦设置就会到期,因为你和服务器位于不同的时区?查看setting a timezonelist of supported timezones

再次,从代码示例和解释,这只是一个猜测。它也可能是您的浏览器未设置为接受cookie等...

希望有所帮助。

答案 1 :(得分:0)

Cookie被设置为HTTP标头的一部分,如果首先向浏览器发送任何其他输出,则无法成功设置。那么你的cookie页面中的php标签上面是否有空格或其他文本/ html内容?如果是这样,请将其删除并重试。

我建议首先在其中添加一个单独的最小测试用例,然后一旦你确信你有这个工作,就添加你的帖子逻辑。