• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

模仿韩顺平老师做的web聊天系统,大神帮忙看下出了啥有关问题

php 搞代码 3年前 (2022-01-24) 18次浏览 已收录 0个评论

模仿韩顺平老师做的web聊天系统,大神帮忙看下出了啥问题

本帖最后由 alakey 于 2014-01-18 22:52:59 编辑

<br />*******chatRoom.php******<br /><br /><br /><?php<br />//接受open传递的用户名<br /> $username=$_GET['username'];<br /> $username=trim($username);<br /> session_start();<br /> $loginuser=$_SESSION['loginuser'];<br />?><br /><meta http-equiv="content-type" content="text/html;charset=utf-8"/><br /><script type="text/javascript" src="my.js"></script><br /><script type="text/javascript"><br /><br />  window.resizeTo(800,700);<br />  window.setInterval("getMessage()",3000);<br /><br />   function getMessage(){<br />    //创建一个xmlHttpRequest对象<br />    var myXmlHttpRequest=getXmlHttpObject();<br />	if(myXmlHttpRequest){<br />		<br />	 var url="getMessageController.php";<br />	 var data="getter=<?php echo $loginuser; ?>&sender=<?php echo $username; ?>";<br />	 <br />     myXmlHttpRequest.open("post",url,true);<br />	 myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");<br />     myXmlHttpRequest.onreadystatechange=function(){<br />	  if(myXmlHttpRequest.readyState==4){<br />	    if(myXmlHttpRequest.status==200){<br />		  var mesRes=myXmlHttpRequest.responseXML;<br />		  var cons=mesRes.getElementsByTagName("con");<br />		  var sendtimes=mesRes.getElementsByTagName("sendtime");<br />		  if(cons.length!=0){<br />		    for(var i=0;i<cons.length;i++){<br />			 $("mycons").value+="<?php echo $username;?>说:"+cons[i].childNodes[0].nodeValue+"___"+sendtimes[i].childNodes[0].nodeValue;<br />			<br />             <br />			}<br />		  }<br />		}<br />	  }<br />	 }<br />     myXmlHttpRequest.send(data);<br />	}<br />  }<br />  function sendMessage(){<br />  //创建一个xmlHttpRequest对象<br />    var myXmlHttpRequest=getXmlHttpObject();<br />	if(myXmlHttpRequest){<br />		<br />	 var url="sendMessageController.php";<br />	 var data="con="+$('con').value+"&getter=<?php echo $username; ?>&sender=<?php echo $loginuser; ?>";<br />	 <br />     myXmlHttpRequest.open("post",url,true);<br />	 myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");<br />     myXmlHttpRequest.onreadystatechange=function(){<br />	   if(myXmlHttpRequest.readyState==4){<br />	     if(myXmlHttpRequest.status==200){<br />		   //这里是返回信息,暂不需要<br />		   <br />		 }<br />	   <br />	   }<br />	 <br />	  }<br />       myXmlHttpRequest.send(data);<br />	}<br />  }<br /><br /></script><br /><br /><body><br /><br /><br /><h1>网页聊天室(<font color="blue"><?php echo $loginuser; ?></font>正在和<font color="red"><?php echo $username; ?></font>聊天)</h1><br /><textarea cols="60" rows="20" id="mycons"></textarea><br /><br /><br /><br /><br /><br /><br /><br />*********getMessageController.php********<br /><br /><?php<br />require_once 'MessageService.class.php';<br />header("content-type:text/xml;charset=utf-8");<br />header("Cache-Control:no-cache"):<br /> $getter=$_POST['getter'];<br /> $sender=$_POST['sender'];<br /> <br /> $messageService=new MessageService();<br /><br /> $messageList=$messageService->getMessage($getter,$sender);<br /> <br /> echo $messageList;<br /><br /> ?><br /><br />*********MessageService.class.php********<br /><br /><?php<br /><br />require_once 'SqlHelper.class.php';<br />class MessageService{<br /><br /> function addMessage($sender,$getter,$con){<br />$sql="insert into messages (sender,getter,content,sendtime) values ('$sender','$getter','$con',now())";<br />$sqlHelper=new SqlHelper();<br />return $sqlHelper->execute_dml($sql);<br />}<br /><br /> function getMessage($getter,$sender){<br /> <br />    $sql="select * from messages where getter='$getter' and sender='$sender' and isGet=0";<br />    <br />    $sqlHelper=new SqlHelper();<br /><br />	$array=$sqlHelper->execute_dql2($sql);<br />    	$messageInfo="";<br />    for($i=0;$i<count($array);$i++){<br />	  $row=$array[$i];<br />      $messageInfo.="{$row['id']}{$row['sender']}{$row['getter']}{$row['content']}{$row['sendtime']}";<br />	}<br />     $messageInfo.="";<br />	 $sqlHelper->close_connect();<br />     return $messageInfo;<br /> }<br /><br />}<br />?><br />

大神帮忙看下问题出在哪了?
——解决思路———————-
没仔细看。单这一句: session_start();
因其前面有html标签的输出,肯定会有“headers already sent”的错误提示的吧?

你都没说你出什么问题了,让大家如何下手
——解决思路———————-
书写健壮的代码是很重要的

....<br />if(myXmlHttpRequest.status==200){<br />  var mesRes=myXmlHttpRequest.responseXML;<br />  if(mesRes.xml == '') { //如果不是 xml 对象<br />    aler<div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>t(myXmlHttpRequest.responseText);//看一下究竟返回了什么<br />    return;<br />  }<br />....<br />

——解决思路———————-
这个估计也就是个外表吧,性能比较差。
聊天室,采用websockeet或comet,
其次也不必用数据库,redis或文件存储即可
——解决思路———————-
header(“Cache-Control:no-cache”):
这种错误,提示应该很明显吧


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:模仿韩顺平老师做的web聊天系统,大神帮忙看下出了啥有关问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址