首頁 php教程 php手册 PHP+ajax聊天室源码!支持长轮循跟定时请求两种

PHP+ajax聊天室源码!支持长轮循跟定时请求两种

Jun 13, 2016 am 10:17 AM
php+ajax s 定時 支援 原始碼 聊天室 請求


 

 

 

 

<span   1</span> <span var</span> lastID = "1";<span //</span><span 声明上次取回的消息的ID</span>
<span   2</span> <span var</span> isposted = <span false</span><span ;
</span><span   3</span> <span var</span> mGetTime;<span //</span><span 设置setTimeout的返回值
</span><span   4</span> <span // 通过封装getAjax()方法创建XMLHTTPRequest对象</span>
<span   5</span>  <span function</span> <span trim</span>(str){ <span //</span><span 删除左右两端的空格</span>
<span   6</span>  <span return</span> str.replace(/(^\s*)|(\s*$)/g, ""<span );
</span><span   7</span> <span }
</span><span   8</span> 
<span   9</span> <span function</span><span  getPlainTxt() {
</span><span  10</span> <span var</span> str=UE.getEditor('myEditor').<span getContent()
</span><span  11</span> str=<span trim</span><span (str);
</span><span  12</span> $('#mess').<span html(str);
</span><span  13</span> <span }
</span><span  14</span> 
<span  15</span> <span function</span><span  setContentmess() {
</span><span  16</span> UE.getEditor('myEditor').setContent('', <span false</span><span );
</span><span  17</span> <span return</span><span ;
</span><span  18</span> <span }
</span><span  19</span> 
<span  20</span> <span //</span><span 获取JSURL后面的参数</span>
<span  21</span> <span function</span> _getArgs(name,<span _number){
</span><span  22</span> <span var</span> jsFileName =<span  name;
</span><span  23</span> <span var</span> rName = <span new</span> RegExp(jsFileName+"(\\?(.*))?$"<span )
</span><span  24</span> <span var</span> jss=document.getElementsByTagName('script'<span );
</span><span  25</span> <span for</span> (<span var</span> i = 0;i < jss.length; i++<span ){
</span><span  26</span>   <span var</span> j =<span  jss[i];
</span><span  27</span>   <span if</span> (j.src&&j.src.<span match(rName)){
</span><span  28</span>     <span var</span> oo = j.src.match(rName)[2<span ];
</span><span  29</span>     <span if</span> (oo&&(t = oo.match(/([^&=]+)=([^=&]+)/<span g))){
</span><span  30</span>         <span for</span> (<span var</span> l = 0; l < t.length; l++<span ){
</span><span  31</span>             r =<span  t[l];
</span><span  32</span>             <span var</span> tt = r.match(/([^&=]+)=([^=&]+)/<span );
</span><span  33</span>             <span if</span><span  (tt)
</span><span  34</span>             <span return</span><span  tt[_number];
</span><span  35</span>                 <span //</span><span document.write('参数:' + tt[1] + ',参数值:' + tt[2] + '<br />');</span>
<span  36</span> <span         }
</span><span  37</span> <span     }
</span><span  38</span> <span   }
</span><span  39</span> <span }
</span><span  40</span> <span }
</span><span  41</span> 
<span  42</span> 
<span  43</span> <span function</span><span  user_to(){
</span><span  44</span> <span var</span> userid1=$('#userid1').<span val();
</span><span  45</span>     <span if</span>(userid1=='所有人'<span ){
</span><span  46</span> alert('请选择聊天对象哦!\n\n点击用户名称即可!'<span );
</span><span  47</span> $("#userid2").attr("checked",<span false</span><span );
</span><span  48</span> <span     }
</span><span  49</span> <span return</span> <span false</span><span ;
</span><span  50</span> <span }
</span><span  51</span> 
<span  52</span> 
<span  53</span> 
<span  54</span> 
<span  55</span> 
<span  56</span> <span //</span><span 点击选择用户</span>
<span  57</span> <span function</span><span  getFirend(name) {
</span><span  58</span>     <span var</span><span  new_name;
</span><span  59</span>     <span if</span>(name.length > 1 && name!="所有人"<span ) {
</span><span  60</span>         $("#userto").<span val(name);
</span><span  61</span>         $("#userid1").attr("checked",<span false</span><span );
</span><span  62</span>         $("#userid2").attr("checked",<span true</span><span );
</span><span  63</span> 
<span  64</span>         <span if</span>(name.length > 8<span ) {
</span><span  65</span>             new_name = name.<span substr</span>(0, 6<span );
</span><span  66</span>         } <span else</span><span  {
</span><span  67</span>             new_name =<span  name;
</span><span  68</span> <span         }
</span><span  69</span>         document.getElementById("tousertitle").innerHTML = "<font color=#ff6600 title=" + new_name + ">" + new_name + "</font>"<span ;
</span><span  70</span>     }<span else</span><span {
</span><span  71</span> 
<span  72</span>         $("#userto").val("所有人"<span );
</span><span  73</span> 
<span  74</span>         $("#userid1").attr("checked",<span true</span><span );
</span><span  75</span>         $("#userid2").attr("checked",<span false</span><span );
</span><span  76</span> 
<span  77</span> 
<span  78</span> 
<span  79</span>         document.getElementById("tousertitle").innerHTML = "用户"<span ;
</span><span  80</span> <span     }
</span><span  81</span> <span }
</span><span  82</span> 
<span  83</span> 
<span  84</span> 
<span  85</span> <span //</span><span 发送消息的方法</span>
<span  86</span> <span function</span><span  sendMess()
</span><span  87</span> <span {
</span><span  88</span> 
<span  89</span> <span    getPlainTxt();
</span><span  90</span>     <span //</span><span 如果消息为空给出提示并返回</span>
<span  91</span>     <span var</span> messvalue  =$("#mess").<span html();
</span><span  92</span>         messvalue=<span trim</span><span (messvalue);
</span><span  93</span> 
<span  94</span>         <span if</span>(messvalue.length>650<span ){
</span><span  95</span>         alert("参与互动提示:\n亲,输入的文字是不是有点多了?!,少说点吧!\n\n复制过来的文字!请先清除格式!"<span );
</span><span  96</span>         <span //</span><span document.getElementById("mess").focus();//把焦点设置到消息输入框</span>
<span  97</span>         <span return</span> <span false</span><span ;
</span><span  98</span> <span         }
</span><span  99</span> 
<span 100</span> 
<span 101</span> 
<span 102</span>         <span if</span>($("#mess").html().length<2<span ){
</span><span 103</span>         alert("参与互动提示:\n请填写您要发表的内容,长度必须2~250个字节!"<span );
</span><span 104</span>         <span //</span><span document.getElementById("mess").focus();//把焦点设置到消息输入框</span>
<span 105</span>         <span return</span> <span false</span><span ;
</span><span 106</span> <span         }
</span><span 107</span> 
<span 108</span>     <span var</span> d = <span new</span> <span Date</span><span ();
</span><span 109</span>         <span var</span> username = $("#username").<span val() ;
</span><span 110</span>         <span var</span> userto   = $("#userto").<span val() ;
</span><span 111</span>         <span var</span> userid   = $("#userid").<span val() ;
</span><span 112</span>         <span //</span><span var mess   = document.getElementById("mess").value ;</span>
<span 113</span>         <span var</span> mess     =<span  messvalue ;
</span><span 114</span>         <span var</span> userpid  = $("#userpid").<span val() ;
</span><span 115</span>         <span var</span> IP       = $("#IP").<span val() ;
</span><span 116</span>         <span var</span> usertype = $("#usertype").<span val() ;
</span><span 117</span> 
<span 118</span>         <span var</span> sendUrl = "username="+username+"&userto="+userto+"&userid="+userid+"&userpid="+userpid+"&mess="+mess +"&IP="+IP +"&usertype="+usertype+"&d="+d.<span getTime();
</span><span 119</span>         <span var</span> sendUrl =<span  encodeURI(sendUrl);
</span><span 120</span>       XMLHttp.sendReq('POST', 'send.php',sendUrl,<span  send_response);
</span><span 121</span> 
<span 122</span> 
<span 123</span> <span }
</span><span 124</span> 
<span 125</span> <span function</span><span  send_response(obj){
</span><span 126</span>     <span var</span> response = obj.<span responseText;
</span><span 127</span>     <span if</span>(response=='ok'<span ){
</span><span 128</span> <span if</span>(!<span isposted){
</span><span 129</span> isposted = <span true</span><span ;
</span><span 130</span> <span getMess();
</span><span 131</span> <span }
</span><span 132</span>       setContentmess();<span //</span><span 设置消息框为空</span>
<span 133</span> <span     }
</span><span 134</span>     <span if</span>(response=='false'<span ){
</span><span 135</span>       alert("发送失败!你的字符含有非法字"<span );
</span><span 136</span> <span getMess();
</span><span 137</span> <span     }
</span><span 138</span> <span }
</span><span 139</span> 
<span 140</span> <span function</span><span  getMess(){
</span><span 141</span> <span var</span> d = <span new</span> <span Date</span><span ();
</span><span 142</span> 
<span 143</span> <span var</span> getUrl = "getmess.php?lastid="+lastID +"&numbermess=80&d="+d.getTime();<span //</span><span 从服务器返回消息的地址</span>
<span 144</span>  $.<span ajax({
</span><span 145</span>                 type:"GET",
<span 146</span>                 dataType:"xml",
<span 147</span>                 url:getUrl,
<span 148</span>                 async: <span true</span>,
<span 149</span>                 timeout:80000,     <span //</span><span ajax请求超时时间80秒</span>
<span 150</span> 
<span 151</span>                 success:<span function</span>(data,<span textStatus){
</span><span 152</span>                     <span //</span><span 从服务器得到数据,显示数据并继续查询</span>
<span 153</span> isposted = <span false</span><span ;
</span><span 154</span> <span var</span> chatEL = $("#chat"<span );
</span><span 155</span> $(data).find("message").<span each</span>(<span function</span>(i,<span va){
</span><span 156</span> <span var</span>  sid      =$(this).find("sid").<span text();
</span><span 157</span> <span var</span>  succ     =$(this).find("succ").<span text();
</span><span 158</span> <span var</span>  umax     =$(this).find("umax").<span text();
</span><span 159</span> <span var</span>  user     =$(this).find("user").<span text();
</span><span 160</span> <span var</span>  userto   =$(this).find("userto").<span text();
</span><span 161</span> <span var</span>  userid   =$(this).find("userid").<span text();
</span><span 162</span> <span var</span>  usersex  =$(this).find("usersex").<span text();
</span><span 163</span> <span var</span>  usertype =$(this).find("usertype").<span text();
</span><span 164</span> <span var</span>  userpic  =$(this).find("userpic").<span text();
</span><span 165</span> <span var</span>  userpid  =$(this).find("userpid").<span text();
</span><span 166</span> <span var</span>  text     =$(this).find("text").<span text();
</span><span 167</span> <span var</span>  <span date</span>     =$(this).find("date").<span text();
</span><span 168</span> <span var</span>  uid          = _getArgs('function.js','2'<span )
</span><span 169</span>  <span //</span><span 有数据</span>
<span 170</span> 
<span 171</span>  <span if</span>(succ==1<span ){
</span><span 172</span>                 <span if</span>(uid>=98<span ){
</span><span 173</span>                 delhtml='<a href="#"  id="delmess" onclick=delmess("'+ sid +'","delmess");>[删除]</a><a href="#"  onclick=delmess("'+ userid +'","delusermess");  id="delusermess">[删除该用户的全部信息]</a>'<span ;
</span><span 174</span>                 }<span else</span><span {
</span><span 175</span>                 delhtml=''<span ;
</span><span 176</span> <span                 }
</span><span 177</span>                 <span if</span>(usertype>=98<span ){
</span><span 178</span>                 <span var</span> chatELinnerHTML = '<div class=chu><ul><li class=chu1><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src='+userpic+' border=0    style="max-width:90%"PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a></li><li class=chu2><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src=/WebSystems/images/img/icons/gif/group.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a> <a href=javascript:void(0) onclick=getFirend("'+ user +'"); ><font class=ChatFont3>管理员(' + user + ')</font></a> <img  src=/WebSystems/images/img/icons/gif/male.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" > <a href=javascript:void(0) onclick=getFirend("'+ userto +'");><font class=ChatFont3>' + userto + '</font></a> <font color=#575D69>说</font> <font color=#575D69>' + <span date</span> +'</font><img  src=/WebSystems/images/img/icons/gif/07.gif / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" >'+delhtml+'<br>' +text + '</li></ul></div>'<span ;
</span><span 179</span>                 chatEL.<span append(chatELinnerHTML);
</span><span 180</span>                 }<span else</span><span {
</span><span 181</span>                 <span var</span> chatELinnerHTML = '<div class=chu><ul><li class=chu1><a href="#" target=_blank><img  src='+userpic+' border=0    style="max-width:90%"PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a></li><li class=chu2><a href=http://www.0917cc.com?ID='+userid+' target=_blank><img  src=/WebSystems/images/img/icons/gif/group.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" ></a> <a href=javascript:void(0) onclick=getFirend("'+ user +'"); ><font class=ChatFont1>(' + user + ')</font></a> <img  src=/WebSystems/images/img/icons/gif/male.png / alt="PHP+ajax聊天室源码!支持长轮循跟定时请求两种" > <a href=javascript:void(0) onclick=getFirend("'+ userto +'");><font class=ChatFont2>' + userto + '</font></a> <font color=#575D69>说</font> <font color=#575D69>' + <span date</span> +'</font>'+delhtml+'<br>' + text+ '</li></ul></div>'<span ;
</span><span 182</span>                 chatEL.<span append(chatELinnerHTML);
</span><span 183</span> <span                 }
</span><span 184</span>     lastID = umax;<span //</span><span 上次消息的ID</span>
<span 185</span>     chatEL.scrollTop(document.getElementById("chat").scrollHeight);<span //</span><span 滚动到最后一条消息</span>
<span 186</span>     <span if</span>(!<span isposted){
</span><span 187</span>     isposted = <span true</span><span ;
</span><span 188</span> <span     getMess();
</span><span 189</span> <span     }
</span><span 190</span> <span }
</span><span 191</span> 
<span 192</span> 
<span 193</span> 
<span 194</span> <span //</span><span 未从服务器得到数据,继续查询</span>
<span 195</span> <span if</span>(succ==0<span ){
</span><span 196</span> lastID = sid;<span //</span><span 上次消息的ID</span>
<span 197</span> chatEL.scrollTop = chatEL.scrollHeight;<span //</span><span 滚动到最后一条消息</span>
<span 198</span> <span if</span>(!<span isposted){
</span><span 199</span> isposted = <span true</span><span ;
</span><span 200</span> <span getMess();
</span><span 201</span> <span }
</span><span 202</span> <span }
</span><span 203</span> <span  });
</span><span 204</span> <span //</span><span each--end</span>
<span 205</span>              },
<span 206</span>              <span //</span><span -success-end
</span><span 207</span> <span              //Ajax请求超时,继续查询</span>
<span 208</span>              error:<span function</span>(XMLHttpRequest,textStatus,<span errorThrown){
</span><span 209</span>                      <span if</span>(textStatus=="timeout"<span ){
</span><span 210</span>                        $("#msg").show().html("您有好长时间没有发言了啊.").fadeOut(3200<span );
</span><span 211</span>                          <span if</span>(!<span isposted){
</span><span 212</span> isposted = <span true</span><span ;
</span><span 213</span> <span getMess();
</span><span 214</span> <span }
</span><span 215</span> <span                      }
</span><span 216</span> <span              }
</span><span 217</span> 
<span 218</span> <span             });
</span><span 219</span> 
<span 220</span> }
登入後複製

 

 

*本聊天系统采用PHP+AJAX+MYSQL开发而成!数据库支持mysql,支持XML,支持txt,支持accsess等数据库,可随意转换
聊天功能:1:表情2:超链接3:发送图片,4发送文件,5字体设置,6涂鸦功能
功能:可以对某个人说话,也可以对所有人说话,支持私聊(vip功能)
支持PHP长连接sleep实现的聊天室源码跟ajax实现的聊天室代码
作者:margin(qq:249189520----qq群:90316079-----账号1:admin密码:admin   账号2:demo 密码:demo

官方网站:http://www.0917cc.com

PHP+ajax聊天室模拟推送http://room.0917y.com/websystems/Chatroom2/

可以在火狐FF下查看连接进程跟下面的有什么不一样
PHP+ajax聊天室http://room.0917y.com/websystems/Chatroom/index.php?pid=25&ppid=64

*模拟推送是根据PHP长连接sleep实现的

不足跟缺点:
一直困惑了我一晚上都没有解决的问题是,在编辑器开头第一个插入空格的话!老是提示错误!好像跟XML规范有关系!
又好像是编辑器ueditor的问题取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0不知道怎么处理
服务器的过滤不行!客户的过滤还不行!请求高手看下....

 

 

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用MySQL和Java實作一個簡單的聊天室功能 如何使用MySQL和Java實作一個簡單的聊天室功能 Sep 21, 2023 pm 05:13 PM

如何使用MySQL和Java實作一個簡單的聊天室功能引言:在當今社群媒體的盛行下,人們越來越依賴線上聊天來交流和分享資訊。如何使用MySQL和Java實作一個簡單的聊天室功能是一個非常有趣且實用的專案。本文將介紹如何使用MySQL和Java來實現此功能,並提供具體的程式碼範例。一、搭建資料庫首先,我們需要在MySQL中建立一個資料庫來儲存聊天室的相關資訊。

如何解決Windows Hello不支援的相機問題 如何解決Windows Hello不支援的相機問題 Jan 05, 2024 pm 05:38 PM

在使用windowshello中,找不到支援的鏡頭,常見的原因是使用的攝影機不支援人臉辨識、攝影機驅動安裝不正確導致的,那麼接下來讓我們一起去看一下怎麼去設定。 windowshello找不到支援的攝影機教學:原因一:攝影機驅動安裝不對1、一般來說Win10系統可以自動為大部分攝影機安裝驅動程序,如下,插上攝影機之後會有通知;2、這時我們打開設備管理器看看,攝影機驅動是否安裝好,沒有的話就需要手動操作一下。 WIN+X,然後選擇裝置管理員;3、裝置管理員視窗中,展開照相機選項,會顯示相機的驅動型號

優缺點分析:深入了解開源軟體的優缺點 優缺點分析:深入了解開源軟體的優缺點 Feb 23, 2024 pm 11:00 PM

開源軟體的利與弊:了解開源專案的優劣勢,需要具體程式碼範例在當今數位化時代,開源軟體越來越受到關注和推崇。作為一種基於合作和分享精神的軟體開發模式,開源軟體在不同領域都有廣泛的應用。然而,儘管開源軟體具有諸多優勢,但也存在一些挑戰和限制。本文將深入探討開源軟體的利與弊,並透過具體的程式碼範例展示開源專案的優劣勢。一、開源軟體的優勢1.1開放性與透明性開源軟體

PyCharm社群版支援的插件足夠嗎? PyCharm社群版支援的插件足夠嗎? Feb 20, 2024 pm 04:42 PM

PyCharm社群版支援的插件足夠嗎?需要具體程式碼範例隨著Python語言在軟體開發領域的應用越來越廣泛,PyCharm作為一款專業的Python整合開發環境(IDE),備受開發者青睞。 PyCharm分為專業版和社群版兩個版本,其中社群版是免費提供的,但其外掛程式支援相對專業版有所限制。那麼問題來了,PyCharm社群版支援的插件夠嗎?本文將透過具體的程式碼範例

華碩TUF Z790 Plus相容華碩MCP79記憶體的頻率 華碩TUF Z790 Plus相容華碩MCP79記憶體的頻率 Jan 03, 2024 pm 04:18 PM

華碩tufz790plus支援內存頻率華碩TUFZ790-PLUS主機板是一款高性能主機板,支援雙通道DDR4內存,最大支援64GB內存。它的記憶體頻率非常強大,最高可達4800MHz。特定支援的記憶體頻率包括2133MHz、2400MHz、2666MHz、2800MHz、3000MHz、3200MHz、3600MHz、3733MHz、3866MHz、4000MHz、4133MHz、4266MHz、MHz、MHz、MHz、MHz、MHz、MHz、MHz Hz。無論是日常使用還是高效能需

如何使用Go語言開發Websocket聊天室 如何使用Go語言開發Websocket聊天室 Dec 14, 2023 pm 01:46 PM

如何使用Go語言開發Websocket聊天室Websocket是一種即時通訊協議,透過建立一次連接,可以在伺服器和客戶端之間進行雙向通訊。在開發聊天室時,Websocket是一個非常好的選擇,因為它可以實現即時訊息交流,並且能夠提供高效的效能。本文將介紹如何使用Go語言開發一個簡單的Websocket聊天室,並提供一些具體的程式碼範例。一、準備工作1.安裝Go

GTX960與XP系統的兼容性及相關說明 GTX960與XP系統的兼容性及相關說明 Dec 28, 2023 pm 10:22 PM

有一些用戶使用xp系統,想要將他們的顯示卡升級為gtx960,但不確定gtx960是否支援xp系統。實際上,gtx960是支援xp系統的。我們只需在官網下載適用於xp系統的驅動程序,就可以使用gtx960了。下面就讓我們一起來看看具體的步驟。 gtx960支援xp系統嗎:GTX960可以與XP系統相容。只需要下載並安裝驅動程序,你就可以開始使用了。首先,我們需要開啟NVIDIA官網並導航到主頁。然後,我們需要在頁面上方找到一個標籤或按鈕,它可能會被標記為「驅動程式」。一旦找到了這個選項,我們就需要點擊

教你如何設定Win11定時關機 教你如何設定Win11定時關機 Jan 06, 2024 pm 07:14 PM

有的時候,我們需要離開電腦一段時間讓它持續下載或允許某些程序,想要在運行結束後關機,那麼win11定時關機怎麼設置呢,其實使用關機命令就可以了。 win11定時關機怎麼設定:1、先右鍵左下角開始選單,開啟「運轉」2、接著在其中輸入「shutdown-s-t7200」並回車運轉。 (這裡的7200就是定時關機的時間,單位為秒,7200就是2小時後關機)3、這樣我們就能完成定時關機設定了。 4.如果想要取消定時關機,只要輸入「shutdown-a」並回車。 5.確認後就可以取消定時關機了。

See all articles