session_start有问题

时间:2011-06-06 15:18:32

标签: php javascript ajax

我正在尝试使用JavaScript和AJAX进行简单的网络聊天。问题是我使用提示框进行登录,并且在<body onload="login()">中调用该函数,这是简单的JS函数,但我想要保存PHP会话中的数据。出现问题的是每次我重新加载聊天页面时都会得到这个

  

警告:session_start()   [function.session-start]:无法发送   会话cookie - 已发送的标头   由

我想这是标准的东西 - 我在身体中加载了更少的函数,甚至我将session_start函数放在页面的顶部,也许在它之前加载了一些东西。所以,如果我'当你使用JS和PHP会话有任何方法来解决它时,有一些标准问题,我是不是想通过尝试混合PHP和JS这样做?我想使用ob_start,但即使这解决了问题我想找到另一种方法来做这件事,因为我不认为这是最好的编程实践。不管怎样,会对这个主题提出任何建议。

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<LINK href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function showUser()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("ActiveUsers").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","showuser.php",true);
xmlhttp.send();
setTimeout("showUser()",5000);
}
function showChat()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("chat").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","showchat.php",true);
xmlhttp.send();
setTimeout("showChat()",1000);
}
function Login()
{
var x=prompt("Please enter your name","");
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.open("GET","login.php?u="+x,true);
    xmlhttp.send();
    }
</script>
  <title></title>
</head>

<body onload = "showUser(), showChat(), Login()">
<?php
  If ($_SESSION['UserName']!='alabala'){echo "hi";}
?>
<script type="text/javascript">
function doWork(str)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.open("GET","newmsg.php?q="+str,true);
    xmlhttp.send();
}
</script>
<div id="main">
<div id="ActiveUsers"></div>
    <div id="chat"></div>


     <div id="sender">
   Your message: <input type="text" name="msg" size="30" id="msg" />
   <button onclick="doWork(document.getElementById('msg').value);">Send</button>
    </div>
</div>
</body>

</html>

由于

Leron

2 个答案:

答案 0 :(得分:0)

在将任何输出发送到浏览器之前,必须先调用session_start()函数。这包括任何HTML甚至像空白行的空白区域。仔细检查。

JavaScript问题可能是一个红色的鲱鱼。忽略JavaScript并直接在浏览器中使用PHP页面。你可以在没有错误的情况下加载吗?

如果仍然出现错误 - 请注意已经发送的标题部分错误 - 告诉您输出的起始位置。它通常是脚本和行号。去那里看看那时输出的是什么。

答案 1 :(得分:0)

如果您评论session_start()会怎样?是否有任何错误,或者页面是否顺利加载?