【问题标题】:PHP issue "Cannot send session cookie"PHP 问题“无法发送会话 cookie”
【发布时间】:2013-02-28 07:32:56
【问题描述】:

请在附件中找到我的代码:

<?PHP 
session_start();
if (isset($_POST["usernameform"])){ 

$username = $_POST['usernameform'];
$password1 = $_POST['passwordform'];


$user_name = "XXXX";
$password = "XXXXX";
$database = "XXX";
$server = "XXXX";

$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);


$SQL = "SELECT * FROM login WHERE Username = '$username' AND Password = '$password1' "; //grab all the records from table
$result = mysql_query($SQL)
    or die("Error:" . mysql_error());

if (mysql_num_rows($result) > 0){ //if username and password match return number of rows is always 1

$_SESSION['login'] = $username; //by placing this in session it will remember this variable on the page it directs too

while ( $row = mysql_fetch_assoc($result) ){ //lays out array in $result
$_SESSION['ID'] = $row['ID']; //selects from list of array ID
$_SESSION['firstname'] = $row['First_Name'];
echo'<script> window.location="page1.php"; </script> ';

}
} else {
$_SESSION['login'] = '';
print('
<script type="text/javascript"> //place html script for alert. Use single comma for print command here.
    alert("Sorry, your username or password could not be recognized")
</script>
');
session_destroy();
}
}
?>

虽然代码在我的本地主机(wampserver)上运行良好,但它在我的主机上无法运行,并且出现错误:

警告:session_start() [function.session-start]:无法发送会话 cookie - 已发送的标头(输出开始于 /.../vhindex.php:1) 在第 2 行的 /.../vhindex.php 中

警告:session_start() [function.session-start]:无法发送会话 缓存限制器 - 标头已发送(输出开始于 /.../vhindex.php:1) 在第 2 行的 /.../vhindex.php 中

session_start(); 代码已放置在 PHP 块的顶部,在任何 HTML 输出之前,我完全被难住了。

有什么想法吗?

【问题讨论】:

  • 您检查过字节顺序标记 (BOM) 吗?当您的文件采用 UTF8 格式并使用 Windows 的 Notepad.exe 打开它时会发生这种情况。
  • 如何检查 BOM?如果这是导致问题的原因,我该如何解决?
  • 使用能够显示特殊字符的编辑器。
  • 你用的是什么编辑器?
  • 微软表达式。我是这个东西的新手,我如何检查 BOM,它是什么样的以及如何让我的代码再次工作?

标签: php session cookies


【解决方案1】:
  • 下载Notepad++并在那里打开文件,删除&lt;?PHP之前的所有花哨的字符
  • 确保&lt;?PHP 之前没有空格字符,如“”、制表符或换行符。
    • 在记事本++中单击Encoding,然后单击UTF-8 without BOM 将文件转换为不带BOM 的UTF-8,然后保存。
  • 为了安全起见,还要在session_start(); 之前添加ob_start();

【讨论】:

  • 刚想出来这个!谢谢!
【解决方案2】:

如果你从 vhindex.php 加载这个 -.php 文件。确保以正确的顺序完成此操作。 例如。 require_once'handle-user-login.php'; callToYourFunction();

如果您的会话已发送,您会收到此警告。 (是的,就像错误代码所说的那样)。

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2015-06-29
    • 1970-01-01
    • 2015-05-21
    • 2010-09-30
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多