未在浏览器[PHP]中设置Cookie

未在浏览器[PHP]中设置Cookie,php,cookies,login,setcookie,Php,Cookies,Login,Setcookie,我有一些简单的静态登录PHP逻辑,并试图将用户名保存在cookie中。不幸的是,它不保存任何内容,也不返回任何错误,所以我不确定到底出了什么问题。也许你能在代码中发现我做错了什么 $users = array('allan'=>'allanpass'); $username = $_POST["username"]; $enterpass = $_POST["password"]; if(isset($_POST["username"])) { if (array_key_ex

我有一些简单的静态登录PHP逻辑,并试图将用户名保存在cookie中。不幸的是,它不保存任何内容,也不返回任何错误,所以我不确定到底出了什么问题。也许你能在代码中发现我做错了什么

$users = array('allan'=>'allanpass');

$username = $_POST["username"];
$enterpass = $_POST["password"];

if(isset($_POST["username"])) {
    if (array_key_exists($username, $users)) {
        $pass = $users["allanpass"];
        if($enterpass == $pass) {
            setcookie("heyhey", 'user2', time() + 60 * 60 * 24 * 7, '/');
            echo "Welcome back! <br />";
            echo '<a href="login.php?link=link1">Link1</a><br />';
            echo '<a href="login.php?link=link2">Link2</a><br />';
            echo '<a href="login.php?link=link3">Link3</a><br />';

        } else {
            echo "pass does not exist";
        }
    } else {
        array_push($users, $username);
        echo "hello new user <br />";
        echo '<a href="#">Link1</a><br />';
        echo '<a href="#">Link2</a><br />';
        echo '<a href="#">Link3</a><br />';
    }
} else {
    echo "Please fill in the form";
};
$users=array('allan'=>'allanpass');
$username=$_POST[“username”];
$enterpass=$\u POST[“密码”];
如果(isset($_POST[“username”])){
如果(数组\键\存在($username,$users)){
$pass=$users[“allanpass”];
如果($enterpass==$pass){
setcookie(“heyhey”,“user2',time()+60*60*24*7'/”);
回声“欢迎回来!
”; 回声“
”; 回声“
”; 回声“
”; }否则{ 回显“通行证不存在”; } }否则{ 数组推送($users,$username); 回显“你好,新用户
”; 回声“
”; 回声“
”; 回声“
”; } }否则{ echo“请填写表格”; };

编辑:我没有保存以前的Cookie。一切都被破坏了。

谢谢大家的意见,但问题是别的。我是在发送邮件头后设置cookie的。现在,这并不意味着我必须在文件顶部设置cookie,但我在文件顶部有一些注释和空格,删除这些注释和空格可以消除发送错误的标题。如果删除空格不能修复标题错误,请在设置cookie和
ob_end_flush()之前尝试使用
ob_start()
之后。但这不是最佳做法

我还收到了一条警告,指出我定义了变量的未定义索引。在将值分配给if语句中使用的变量之前,检查是否设置了值也有帮助

$username = isset($_POST['username']) ? $_POST['username'] : '';
$enterpass = isset($_POST['password']) ? $_POST['password'] : '';

这些都是密码吗?上面没有更高的吗?未定义:
$pass=$users[“allanpass”]
allanpass是一个值而不是一个键,这应该给您一个通知。你有错误吗?可能是重复的@Andreas是的,它应该是一个值而不是一个键。我正在检查键入的过程是否与数组中的过程匹配。我有错误,我收到了警告,但那是另外一回事。我回答了我自己的问题,你可以检查一下。