我正在尝试使用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
答案 0 :(得分:0)
在将任何输出发送到浏览器之前,必须先调用session_start()
函数。这包括任何HTML甚至像空白行的空白区域。仔细检查。
JavaScript问题可能是一个红色的鲱鱼。忽略JavaScript并直接在浏览器中使用PHP页面。你可以在没有错误的情况下加载吗?
如果仍然出现错误 - 请注意已经发送的标题部分错误 - 告诉您输出的起始位置。它通常是脚本和行号。去那里看看那时输出的是什么。
答案 1 :(得分:0)
如果您评论session_start()
会怎样?是否有任何错误,或者页面是否顺利加载?