“PHP会话开始”;无法发送会话cookie和缓存限制器“;
我已将我的主机服务器从Windows系统更改为Linux系统。但当我运行我的PHP程序时,会出现以下错误:“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/
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");
?>