精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>功能代码>>聊天室>>我的PHP聊天室源代码,大家都来看看。

主题:我的PHP聊天室源代码,大家都来看看。
发信人: amw()
整理人: jackyz(2000-08-10 13:50:37), 站内信件

// 显示信息部份 m.php<br>
&lt;HTML&gt;<br>
&lt;HEAD&gt;<br>
&lt;TITLE&gt;Push Chat Room&lt;/TITLE&gt;<br>
&lt;style type=&quot;text/css&quot;&gt;<br>
&lt;!--<br>
a.font1 { color: #6666FF;text-decoration:none }<br>
a.font1:hover { color: #000000;text-decoration:none;background-color:#
E0EFD0 }<br>
--&gt;<br>
&lt;/style&gt;<br>
&lt;/HEAD&gt;<br>
&lt;BODY bgcolor=&quot;#FFFFFF&quot;&gt;<br>
&lt;p&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
&lt;!--<br>
function sayto(s) {<br>
this.scroll(0,65000);<br>
document.write(s+'&lt;br&gt;&lt;br&gt;');<br>
}<br>
//--&gt;<br>
&lt;/SCRIPT&gt;<br>
很高兴大家能到这里来, 这还是很原始的程序,请不要见笑。 &lt;/p&gt;<br>

&lt;p&gt;Support by Amw. &lt;/p&gt;<br>
&lt;P&gt;<br>
&lt;?
<p>$shm_id=shm_attach($room);<br>
  $shm_var=$room;<br>
  session_start();</p>
<p><br>
  $old_n=0;<br>
  flush();</p>
<p>$i=0;<br>
  while($i&lt;3) {<br>
  sleep(1);</p>
<p> $array=@shm_get_var($shm_id,$shm_var);</p>
<p> if(is_array($array)) {</p>
<p><br>
  $end=$array['end'];<br>
  $start=$array['start'];<br>
  if($old_n&gt;$end) {<br>
  $old_n=$start;<br>
  }</p>
<p> if($end&gt;$old_n) {<br>
  <br>
  if($start&gt;$old_n) { $old_n=$start; }</p>
<p> for($j=$old_n+1;$j&lt;=$end;$j++) {</p>
<p> // list($from,$sayto,$say,$action)=each($array[$j]);<br>
  $from=$array[$j]['from'];<br>
  $sayto=$array[$j]['sayto'];<br>
  $say=$array[$j]['say'];<br>
  $action=$array[$j]['action'];<br>
  $hidden=$array[$j]['hidden'];</p>
<p> if($from==$user_name) {<br>
  $color='#000000';<br>
  } elseif( $sayto==$user_name ) {<br>
  $color='#993366';<br>
  } else {<br>
  $color='#000000';<br>
  }<br>
</p>
<p> if( ($from==$user_name) || ($hidden &amp;&amp; ($sayto==$user_name
)) || !$hidden) 
  {<br>
  $s=&quot;&lt;font color=#6666FF&gt;&quot;.$from.<br>
  &quot;&lt;/font&gt;对&lt;a href=javascript:parent.cs(\'$sayto\'); cl
ass=font1 
  target=bottom title=$sayto&gt;&quot;<br>
  .&quot;$sayto&lt;/a&gt;$action: &lt;font color=$color&gt;$say&lt;/fo
nt&gt;&quot;;<br>
  // $s=htmlspecialchars($array[$j]);<br>
  echo &quot;&lt;SCRIPT Language=\&quot;javascript1.1\&quot;&gt;sayto(
'$s');&lt;/SCRIPT&gt;\n&quot;;<br>
  }</p>
<p> }<br>
  $old_n=$end;<br>
  flush();<br>
  }<br>
  }<br>
  #$i++;</p>
<p>}</p>
<p>?&gt;<br>
  &lt;/body&gt;<br>
  &lt;/html&gt;</p>
<p>// 提交部份<br>
  &lt;html&gt;<br>
  &lt;body onLoad=&quot;form1.say.focus();&quot; bgcolor=&quot;#EFF5FE
&quot;&gt;<br>
  &lt;form name=&quot;form1&quot;&gt;<br>
  &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&q
uot;0&quot; 
  cellpadding=&quot;0&quot;&gt;<br>
  &lt;tr&gt;<br>
  &lt;td width=&quot;75%&quot;&gt;对象 &lt;?<br>
  include ('../mylib.inc');</p>
<p> session_start();<br>
  validuser($user_name);</p>
<p>$shm_id=shm_attach($room);<br>
  $shm_var=$room;<br>
  $shm_userlist=12;</p>
<p>if($clearbtn) {<br>
  shm_remove_var($shm_id,$shm_var);<br>
  } <br>
  elseif($say) {<br>
  $s=@shm_get_var($shm_id,$shm_var);<br>
  if(!is_array($s)) { <br>
  $s=array('start'=&gt;1,'end'=&gt;0,'count'=&gt;0);<br>
  }</p>
<p>$end=$s['end']+1; <br>
  $start=$s['start'];<br>
  $count=$s['count'];<br>
  if($end-$start&gt;=10) {<br>
  unset($s[$start]);<br>
  $s['start']=$start+1;<br>
  }</p>
<p>//$s[$end]=&quot;&lt;font color=#6666FF&gt;&quot;.$user_name.<br>
  // &quot;&lt;/font&gt;对&lt;a href=javascript:parent.cs(\'$sayto\');
 class=font1 
  target=bottom title=$sayto&gt;&quot;<br>
  // .$sayto.&quot;&lt;/a&gt;$action: &quot;.$say;</p>
<p>$s[$end]=array( 'from'=&gt;$user_name,<br>
  'sayto'=&gt;$sayto,<br>
  'say'=&gt;$say,<br>
  'action'=&gt;$action,<br>
  'hidden'=&gt;$hidden);</p>
<p>$s['end']=$end;<br>
  $s['count']=$count+1;</p>
<p>shm_put_var($shm_id,$shm_var,$s);<br>
  #$s=array(&quot;Hello&quot;,&quot;sdf&quot;);<br>
  }</p>
<p>$ul=@shm_get_var($shm_id,$shm_userlist);<br>
  if(!is_array($ul)) {<br>
  $ul=array();<br>
  }<br>
  if(! $ul[&quot;$user_name&quot;] ) { <br>
  $ul[&quot;$user_name&quot;]=1;<br>
  shm_put_var($shm_id,$shm_userlist,$ul);<br>
  }<br>
  <br>
  $defs=($sayto==&quot;所有人&quot;) ? &quot;selected&quot;:&quot;&quo
t;;<br>
  echo &quot; &lt;select name=\&quot;sayto\&quot;&gt;<br>
  &lt;option $defs&gt;所有人&lt;/option&gt;&quot;;<br>
  while( list($key,$val)=each($ul) ) {<br>
  $defs=($sayto==$key) ? &quot;selected&quot;:&quot;&quot;;<br>
  echo &quot;&lt;option $defs&gt;$key&lt;/option&gt;&quot;;<br>
  }<br>
  echo &quot;&lt;/select&gt;&quot;;</p>
<p>?&gt; 动作 <br>
  &lt;select name=&quot;action&quot; title=&quot;各种聊天动作和表情选择
,您也可以在信息输入框中直接使用各种EMOTE。&quot; 
  &gt;<br>
  &lt;option value=&quot;说&quot;&gt;说话 <br>
  &lt;option value=&quot;叫嚷&quot;&gt;叫嚷 <br>
  &lt;option value=&quot;亲亲&quot;&gt;亲亲 <br>
  &lt;option value=&quot;拥抱&quot;&gt;拥抱 <br>
  &lt;option value=&quot;暴怒&quot;&gt;暴怒 <br>
  &lt;option value=&quot;眨眼&quot;&gt;眨眼 <br>
  &lt;option value=&quot;轻推&quot;&gt;轻推 <br>
  &lt;option value=&quot;点头&quot;&gt;点头 <br>
  &lt;option value=&quot;询问&quot;&gt;询问 <br>
  &lt;option value=&quot;傻笑&quot;&gt;傻笑 <br>
  &lt;option value=&quot;拳打&quot;&gt;拳打 <br>
  &lt;option value=&quot;脚踢&quot;&gt;脚踢 <br>
  &lt;option value=&quot;告诫&quot;&gt;告诫 <br>
  &lt;option value=&quot;耳光&quot;&gt;耳光 <br>
  &lt;option value=&quot;鞠躬&quot;&gt;鞠躬 <br>
  &lt;option value=&quot;歉意&quot;&gt;歉意 <br>
  &lt;option value=&quot;同意&quot;&gt;同意 <br>
  &lt;option value=&quot;惊讶&quot;&gt;惊讶 <br>
  &lt;option value=&quot;摇头&quot;&gt;摇头 <br>
  &lt;option value=&quot;哈欠&quot;&gt;哈欠 <br>
  &lt;option value=&quot;微笑&quot;&gt;微笑 <br>
  &lt;option value=&quot;握手&quot;&gt;握手 <br>
  &lt;option value=&quot;挥手&quot;&gt;挥手 <br>
  &lt;option value=&quot;耸肩&quot;&gt;耸肩 <br>
  &lt;option value=&quot;大哭&quot;&gt;大哭 <br>
  &lt;option value=&quot;抽泣&quot;&gt;抽泣 <br>
  &lt;option value=&quot;安慰&quot;&gt;安慰 <br>
  &lt;option value=&quot;生气&quot;&gt;生气 <br>
  &lt;option value=&quot;承诺&quot;&gt;承诺 <br>
  &lt;option value=&quot;不舍&quot;&gt;不舍 <br>
  &lt;option value=&quot;深情&quot;&gt;深情 <br>
  &lt;option value=&quot;迷惑&quot;&gt;迷惑 <br>
  &lt;option value=&quot;耳语&quot;&gt;耳语 <br>
  &lt;/select&gt;<br>
  悄悄话 <br>
  &lt;input type=&quot;checkbox&quot; name=&quot;hidden&quot; value=&q
uot;1&quot; 
  &lt;? if($hidden){ echo &quot;checked&quot;;}?&gt; &gt;<br>
  图音 <br>
  &lt;input type=&quot;checkbox&quot; name=&quot;can_html&quot; value=
&quot;1&quot;&gt;<br>
  &lt;br&gt;<br>
  信息 <br>
  &lt;input type=&quot;text&quot; name=&quot;say&quot; size=&quot;50&q
uot;&gt;<br>
  &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quo
t;发送&quot;&gt;<br>
  &lt;br&gt;<br>
  &lt;input type=&quot;submit&quot; name=&quot;Submit2&quot; value=&qu
ot;刷新&quot; 
  <br>
  onClick=&quot;javascript:parent.saylist.location.reload();&quot;&gt;
<br>
  &lt;!-- &lt;input type=&quot;submit&quot; name=&quot;clearbtn&quot; 
value=&quot;清除&quot;&gt; 
  --&gt;<br>
  &lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quo
t;离开&quot;&gt;<br>
  &lt;input type=&quot;hidden&quot; name=&quot;room&quot; value=&lt;? 
echo $room;?&gt; 
  &gt;<br>
  &lt;/td&gt;<br>
  &lt;td width=&quot;25%&quot;&gt; <br>
  &lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://book.new
zhongshan.com&quot; 
  target=&quot;_blank&quot;&gt;新城书店&lt;/a&gt; <br>
  &lt;br&gt;<br>
  &lt;a href=&quot;http://www.newzhongshan.com/edu/&quot; target=&quot
;_blank&quot;&gt;新城教育&lt;/a&gt; 
  <br>
  &lt;br&gt;<br>
  &lt;a href=&quot;http://www.newzhongshan.com&quot; target=&quot;_bla
nk&quot;&gt;最新消费信息&lt;/a&gt; 
  &lt;/div&gt;<br>
  &lt;/td&gt;<br>
  &lt;/tr&gt;<br>
  &lt;/table&gt;<br>
  &lt;/form&gt;<br>
  &lt;/body&gt;<br>
  &lt;/html&gt;</p>
<p>// 完</p>
<p>实例可以在 http://202.96.189.113/pcb/ 里,最好先注册。</p>
<p>另外,在现实过程中,用户列表的实时更新是个大问题,大家有什么好方法?
<br>
  希望大家能提宝贵意见。 </p>

--
Operation:I like Windows 98
Server :I like Linux
Program:I like C
Game   :I like StarCraft
Girl   :I like Kathy
Web    :http://amwhuang.yeah.net http://www.newzhongshan.com

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.189.17]

[关闭][返回]