0

我已经通过网络搜索了很多,但没有一个解决方案解决了我的问题..我仍然收到这个错误
警告:session_start()[function.session-start]:无法发送会话cookie - 标头已经发送(输出从 这里开始是我的代码

<?php 
   ob_start();  
   session_start();

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

   $myusername = stripslashes( $myusername );
   $mypassword = stripslashes( $mypassword );
   $myusername = mysql_real_escape_string( $myusername );
   $mypassword = mysql_real_escape_string( $mypassword );

   $mypassword = md5( $mypassword );

   $con = mysql_connect("localhost", "root", "");
   if( !$con ) {
       die('Error connecting to server :'.mysql_error());
   }
   mysql_select_db("user_login",$con);

   $result = mysql_query("SELECT username, password FROM user_info WHERE username='$myusername' && password='$mypassword'");
   if( !mysql_fetch_array( $result, MYSQL_ASSOC ) ) {
       //echo "<b><p>Wrong username or password.</p></b>";
       //echo "<br /><a href='http://localhost/simic/option.php?page=login'> 
       Go back to login page </a>";
       header('Location: option.php?page=attempt_to_login');
   } else {
       $_SESSION['access'] = 1;
       $_SESSION['user'] = $_POST[username];
       header('Location: option.php?page=online');
   }
   mysql_close( $con );

   ob_flush();
 ?>

那么我该如何解决这个问题???有什么帮助吗?

4

3 回答 3

1

默认情况下,某些服务器会将内容添加到生成的 HTML,请确保不是这种情况(在浏览器中检查生成的源文件,看看是否有任何您不期望的内容)。

还可以尝试删除 PHP 文件中的 BOM 标头(如果它是 UTF-8 编码的)。这不应该是一个问题,但它总是值得一试。

每个编辑器删除 BOM 表头的方式都不同。对于记事本++,请转到编码菜单并确保选择“在没有 BOM 的 UTF-8 中编码”。如果您使用的是 Sublime Text 2,请单击 File > Save with Encoding > UTF-8(不是 UTF-8 with BOM)。

于 2013-07-04T08:26:21.883 回答
0

您的问题是您过早”地向浏览器输出文本。从任何来源发送的第一个文本字节会将所有 HTTP 标头信息刷新到浏览器并阻止任何更多“标头”类型的操作(例如发送会话 cookie)。有很多东西可以意外地提前向浏览器发送文本:<?php,屏幕上的错误消息,文件中的 UTF-8 字节顺序标记,或者只是程序输出或乱序的 HTML(位于 cookie 代码之前)。在浏览器中查看 HTML 页面源代码(查看 > 页面源代码等),您可能会看到此文本。如果您的页面是 UTF-8,请将浏览器切换到某个单字节编码(例如 Latin-1)以将字节顺序标记从隐藏中刷新。一旦你确定了这个文本,最重要的工作就是追踪它的来源并修复它。

于 2013-07-08T16:30:34.593 回答
0

您应该检查您的文件是否具有正确的编码。它应该是没有 BOM 的 UTF-8。

于 2013-07-04T08:27:35.847 回答