Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php setcookie()不工作-无法修改标题信息_Php_Cookies - Fatal编程技术网

php setcookie()不工作-无法修改标题信息

php setcookie()不工作-无法修改标题信息,php,cookies,Php,Cookies,我找到了我出错的原因,我的代码没有问题,所以我把它从我的帖子中删除了 我的php页面被编码为UTF-8,但它必须被编码为UTF-8,没有BOM(字节顺序标记) 据我所知,BOM表被解释为一个输出,或者至少创建一个输出 谢谢你的回答,我的问题是重复的,我为此道歉,我看了其他帖子,但还不够远。谢谢 如果在使用setcookie之前已经完成了HTML输出,则需要找到HTML输出的起始位置。在该行上方放置将启动输出缓冲的函数 启用输出缓冲后,程序仍然可以“输出”HTML,但不会立即发送。然后,您应该能够

我找到了我出错的原因,我的代码没有问题,所以我把它从我的帖子中删除了

我的php页面被编码为UTF-8,但它必须被编码为UTF-8,没有BOM(字节顺序标记)

据我所知,BOM表被解释为一个输出,或者至少创建一个输出


谢谢你的回答,我的问题是重复的,我为此道歉,我看了其他帖子,但还不够远。谢谢

如果在使用setcookie之前已经完成了HTML输出,则需要找到HTML输出的起始位置。在该行上方放置将启动输出缓冲的函数

启用输出缓冲后,程序仍然可以“输出”HTML,但不会立即发送。然后,您应该能够毫无问题地调用setcookie:

  <?php
  function login($username,$pwd)
    {   
        $mysqli=dbconnect(); //no output
        $query = "SELECT * FROM `users` WHERE `name`='$username' AND `password`='$pwd'";
        $result = $mysqli->query($query) or die($mysqli->error.__LINE__);
        if($result->num_rows == 1) {
            while($row = $result->fetch_assoc()) {
                ob_start(); //set output buffering before setting cookies..
                setcookie("ID", $row['userid'], time()+3600*24*365);
                ob_end_flush(); // flush data
                if (isset($_COOKIE['UNIQUE_ID']))
                    {echo 'Connected';}
                else{echo 'No cookie today :(';}
            }
        }
        dbclose($mysqli); //no output
    }
    ?>

在打开标记之前,请尝试删除所有空白


结束标记是可选的,可能有助于将空格误解为输出

完整的错误消息可能会告诉您标题是何时发送的(什么文件和哪行)。以下提示使用输出缓冲函数了解如何延迟脚本输出。[…]已发送的标题(输出开始于/***/log.php:1)在第156行的/***/library.php中(log.php对应于第一个代码块,第156行是我设置cookie的那一行),您提到必须小心开头php标记附近的额外“空格”。在打开PHP标记之前,是否确保没有换行符或其他内容?或者在library.PHP中的PHP标记之前或之后添加额外的空格?此外,while循环是不必要的。它仅在有一行时执行。所以不需要循环。对不起,没有工作。我需要“刷新”或类似的东西吗?是的,你可以尝试在我给定的链接中使用这些输出缓冲的组合中的任何一种..不要忘记无论何时开始你都必须结束。。因此,当您使用ob_start()时,请刷新数据。尝试使用printf、echo、print来回显您设置的cookie(如果存在),如果cookie已设置,这将有所帮助。。。