Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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会话开始”;无法发送会话cookie和缓存限制器“;_Php - Fatal编程技术网

“PHP会话开始”;无法发送会话cookie和缓存限制器“;

“PHP会话开始”;无法发送会话cookie和缓存限制器“;,php,Php,我已将我的主机服务器从Windows系统更改为Linux系统。但当我运行我的PHP程序时,会出现以下错误: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/p/y/c/francis/html/login/login.php:2) in /home/content/p/y/

我已将我的主机服务器从Windows系统更改为Linux系统。但当我运行我的PHP程序时,会出现以下错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/p/y/c/francis/html/login/login.php:2) in /home/content/p/y/c/francis/html/login/login.php on line 4

这是我的程序代码:

<?php

session_start();

$username  = $_POST['username'];
$password  = $_POST['password'];

if ($username && $password)
{

$connect = mysql_connect(***,***,***);
mysql_select_db("phploginregister") or die("Couldn't find db");

$query = mysql_query("SELECT * FROM users WHERE username='$username'");

$numrows = mysql_num_rows($query);

if ($numrows != 0)
{

    while ($row = mysql_fetch_assoc($query))
    {
    $dbusername = $row['username'];
    $dbpassword = $row['password'];
    }

    //check to see if they match!
    if ($username == $dbusername && md5($password) == $dbpassword)
    {
    echo "You're in! <a href='member.php'>Click</a> here to enter the member page.";
    $_SESSION['username'] = $dbusername;    
    }

    else
        echo "Incorrect password";
}
else
    die("That user doens't exist!");

}
else
    die("Please enter an username and password");



?>
我认为您应该添加

ob_start()

在代码的第一个中

并在底部添加

ob_get_contents();
ob_end_flush()

因为

会话将头发送到服务器,您还添加了echo(这也会用头告诉服务器它的html)


服务器现在必须使用头,所以使用
ob_start()
ob_end_flush()要工作:)

您在开始前有一个前导BOM、新行或其他空白字符
您会收到错误,因为在启动会话_start()之前有一些输出;这可能是因为编辑器在文件开头包含BOM表字符。尝试在记事本中打开代码,查看会话_start(),(空格)或类似内容之前是否有任何行,然后将其删除


若要修复编辑器在文件中添加bom表的问题,您需要转到设置并将其关闭。

是否在任何地方包含此文件?您需要确保在
会话\u开始之前没有发送输出。您的Windows服务器可能配置了输出缓冲,这就是它没有给出错误的原因。您可能正在处理BOM:已解决!问题是在这之前有一个空格/换行符script@Quasdunk使用BOM表,在线开始输出0@user947093将其发布为answerob_end_flush()就足够了,不需要调用ob_get_contents(),它将返回ob内容
<?php

session_start();

$username  = $_POST['username'];
$password  = $_POST['password'];

if ($username && $password)
{

$connect = mysql_connect(***,***,***);
mysql_select_db("phploginregister") or die("Couldn't find db");

$query = mysql_query("SELECT * FROM users WHERE username='$username'");

$numrows = mysql_num_rows($query);

if ($numrows != 0)
{

    while ($row = mysql_fetch_assoc($query))
    {
    $dbusername = $row['username'];
    $dbpassword = $row['password'];
    }

    //check to see if they match!
    if ($username == $dbusername && md5($password) == $dbpassword)
    {
    echo "You're in! <a href='member.php'>Click</a> here to enter the member page.";
    $_SESSION['username'] = $dbusername;    
    }

    else
        echo "Incorrect password";
}
else
    die("That user doens't exist!");

}
else
    die("Please enter an username and password");



?>