设为首页收藏本站language 语言切换
查看: 1197|回复: 0
收起左侧

PHP程序百行代码快速构建简易聊天室方法

[复制链接]
发表于 2010-2-24 13:27:23 | 显示全部楼层 |阅读模式
<p >基本功能:能登陆,聊天,记录在线人数IP事件,能控制聊天的字体颜色,自动把转化聊天中网址为链接地址,能定制聊天室标题、广告信息等等。使用文本作为存储媒体,又兴趣可以参考代码,并且进行扩展。<p ><p >其实PHP作为快速开发的脚本语言是很棒的!<p ><p >===代码===<p ><p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>&lt;?php/** * 黑夜路人简易聊天室 * 作者: heiyeluren &lt;heiyeluren_at_163.com&gt; * 创建: 2005-8-10 22:42 * 修改: 2005-8-11 23:25 */error_reporting(7);session_start();header(&quot;ContentType:text/html;charset=gb2312&quot;);define(&quot;SCRIPT&quot;, $_SERVER['SCRIPT_NAME']);define(&quot;CHAT_NOTE&quot;, &quot;./chat.txt&quot;);define(&quot;ONLINE_LIST&quot;, &quot;./online.txt&quot;);define(&quot;REF_TIME&quot;, 5);define(&quot;CHAT_NAME&quot;, &quot;黑夜路人聊天室&quot;);define(&quot;AD_MSG&quot;, &quot;今天是中国情人节, 祝大家情人节快乐!!&quot;);//获取值if (isset($_GET['action']) &amp;&amp; !empty($_GET['action'])) { $action = $_GET['action'];}//如果已经登陆那么直接跳到聊天界面if (!isset($_GET['action']) &amp;&amp; isset($_SESSION['username'])) { header(&quot;location:&quot;.SCRIPT.&quot;?action=chat&quot;);}//登陆提示if (!isset($_GET['action'])) { if (!session_is_registered('username')) {  echo &quot; &lt;p&gt;&lt;h3 align=center&gt;[ &quot;.CHAT_NAME.&quot; ] &amp;copy; 2005&lt;/h3&gt;&lt;/p&gt;   &lt;p align=center&gt;   &lt;form action=&quot;.SCRIPT.&quot;?action=login method=post&gt;   呢称: &lt;input type=text size=25 maxlength=30 name=login_user&gt;   &lt;input type=submit value=聊天&gt;   &lt;/form&gt;&lt;/p&gt;   &quot;;  exit; }}//校验登陆if ($action=='login'){ if (isset($_POST['login_user']) &amp;&amp; !empty($_POST['login_user'])) {  $username = $_POST['login_user']; } else {  $username = &quot;游客&quot;; } session_register('username'); save_online($username, get_client_ip()); header(&quot;location:&quot;.SCRIPT.&quot;?action=chat&quot;);}//开始聊天www.knowsky.comif ($action==&quot;chat&quot;){ $online_sum = get_online_sum(); echo &quot;&lt;head&gt;&lt;title&gt;[ &quot;.CHAT_NAME.&quot; ]&lt;/title&gt;&lt;/head&gt;&lt;center&gt;&lt;body bgcolor=#C4BFB9 style='font-size:12px;'&gt;   &lt;div style='border:1px solid #999966; width:802px;height:450'&gt;&lt;iframe src='&quot;.SCRIPT.&quot;?action=show'name=show_win width=800 height=450 scrolling=auto frameborder=0&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br&gt;   &lt;marquee width=70% scrollamount=2&gt; &quot;.AD_MSG.&quot; &lt;/marquee&gt;&amp;nbsp;&amp;nbsp; [当前在线:$online_sum]   &lt;iframe src='&quot;.SCRIPT.&quot;?action=say' name=say_win width=800height=60 scrolling=no frameborder=0&gt; &quot;;}//说话界面if ($action==&quot;say&quot;){ echo &quot;&lt;head&gt;&lt;title&gt;[ &quot;.CHAT_NAME.&quot; ]&lt;/title&gt;&lt;/head&gt;&lt;center&gt;&lt;body bgcolor=#C4BFB9 style='font-size:12px;'&gt;  &lt;form action=&quot;.SCRIPT.&quot;?action=save method=post name=chatonSubmit='return check()'&gt;  [&quot;.$_SESSION['username'].&quot;]说:&lt;input type=text size=80maxlength=500 name=chatmsg style=' background-color:#99CC99;width:550px; height:22px; border:1px solid:#000000'&gt;  &lt;select name=usercolor&gt;  &lt;OPTION selected style='COLOR: #000000' value='000000'&gt;默认颜色&lt;/OPTION&gt;  &lt;OPTION style='COLOR: #000000' value='#000000'&gt;黑色沉静&lt;/OPTION&gt;   &lt;option style='COLOR: #ff0000' value='#FF0000'&gt;红色热情&lt;/option&gt;   &lt;option style='COLOR: #0000ff' value='#0000FF'&gt;蓝色开朗&lt;/option&gt;   &lt;option style='COLOR: #ff00ff' value='#FF00FF'&gt;桃色浪漫&lt;/option&gt;   &lt;option style='COLOR: #009900' value='#009900'&gt;绿色青春&lt;/option&gt;   &lt;option style='COLOR: #009999' value='#009999'&gt;青色清爽&lt;/option&gt;   &lt;option style='COLOR: #990099' value='#990099'&gt;紫色拘谨&lt;/option&gt;   &lt;option style='COLOR: #990000' value='#990000'&gt;暗夜兴奋&lt;/option&gt;   &lt;option style='COLOR: #000099' value='#000099'&gt;深蓝忧郁&lt;/option&gt;   &lt;option style='COLOR: #999900' value='#999900'&gt;卡其制服&lt;/option&gt;   &lt;option style='COLOR: #ff9900' value='#FF9900'&gt;镏金岁月&lt;/option&gt;   &lt;option style='COLOR: #0099ff' value='#0099FF'&gt;湖波荡漾&lt;/option&gt;   &lt;option style='COLOR: #9900ff' value='#9900FF'&gt;发亮蓝紫&lt;/option&gt;   &lt;option style='COLOR: #ff0099' value='#FF0099'&gt;爱的暗示&lt;/option&gt;   &lt;option style='COLOR: #006600' value='#006600'&gt;墨绿深沉&lt;/option&gt;   &lt;option style='COLOR: #333333' value='#333333'&gt;灰色轨迹&lt;/option&gt;   &lt;option style='COLOR: #999999' value='#999999'&gt;伦敦灰雾&lt;/option&gt;   &lt;/select&gt;  &lt;input type=submit value='说话' style='background-color:#ffffff'&gt;&lt;a href=&quot;.SCRIPT.&quot;?action=logoff title=退出聊天室target=_top onclick='return confirm(\&quot;你确定要退出聊天室吗?\&quot;)'&gt;退出&lt;/a&gt;  &lt;/form&gt;  &lt;script&gt;function check(){if(document.chat.chatmsg.value==''){;alert('请输入聊天信息!');return false;}return true;}&lt;/script&gt;  &quot;;}//保存说话if ($action==&quot;save&quot;){ if ($_POST['chatmsg']!=&quot;&quot;) {  save_chat($_POST['chatmsg'], $_SESSION['username'], $_POST['usercolor']); } header(&quot;location:&quot;.SCRIPT.&quot;?action=say&quot;);}//显示聊天记录if ($action==&quot;show&quot;){ echo &quot;&lt;body style='font-size:12px' onload='scrollit()'&gt;&quot;; echo &quot;&lt;META HTTP-EQUIV=REFRESH CONTENT='&quot;.REF_TIME.&quot;;URL=&quot;.SCRIPT.&quot;?action=show'&gt;&quot;; if (file_exists(CHAT_NOTE)) {  $chat_msg = @file_get_contents(CHAT_NOTE);  echo $chat_msg; } else {  echo &quot;目前没有人说话&quot;; }}//退出聊天室if ($action==&quot;logoff&quot;){ unset($_SESSION['username']); session_destroy(); header(&quot;location:&quot;.SCRIPT);}/* 基本函数 *///保存聊天记录函数function save_chat($msg, $user, $color){ if (!$fp = fopen(CHAT_NOTE, &quot;a+&quot;)) {  die('创建聊天记录文件失败, 请检查是否有权限.'); } $msg = htmlspecialchars($msg); $msg = preg_replace('/([http|ftp:\/\/])*([a-zA-])+\.([a-zA-Z0-9_-])+\.([a-zA-Z0-9_-])+(a-zA-Z0-9_)*/', '&lt;a href=\\0 target=_blank&gt;\\0&lt;/a&gt;', $msg); $msg = preg_replace('/([a-zA-Z0-9_\.])+@([a-zA-Z0-9-])+\.([a-zA-Z0-9-]{2,4})+/', '&lt;a href=mailto:\\0&gt;\\0&lt;/a&gt;', $msg); $msg = date('H:i:s').&quot; [&quot;.$user.&quot;]说: &lt;font color='&quot;.$color.&quot;'&gt;&quot;.$msg.&quot;&lt;/font&gt;&lt;br&gt;\r\n&quot;; if (!fwrite($fp, $msg)) {  die('写入聊天记录失败.'); } fclose($fp);}//写在线人信息function save_online($user, $ip){ if (!$fp = fopen(ONLINE_LIST, &quot;a+&quot;)) {  die(&quot;创建在线列表文件失败, 请检查是否有权限.&quot;); } $user = str_replace(&quot;|&quot;, &quot;&quot;, $user); $line = $user.&quot;|&quot;.$ip.&quot;|&quot;.time().&quot;\r\n&quot;; if (!fwrite($fp, $line)) {  die(&quot;写入在线列表失败.&quot;); } fclose($fp);}//获取在线人数function get_online_sum(){ if (file_exists(ONLINE_LIST)) {  $online_msg = file(ONLINE_LIST);  return count($online_msg); } else {  return 0; }}//获取当前登陆用户IPfunction get_client_ip(){ if ($_SERVER['REMOTE_ADDR']) {  $cip = $_SERVER['REMOTE_ADDR']; } elseif (getenv(&quot;REMOTE_ADDR&quot;)) {  $cip = getenv(&quot;REMOTE_ADDR&quot;); } elseif (getenv(&quot;HTTP_CLIENT_IP&quot;)) {  $cip = getenv(&quot;HTTP_CLIENT_IP&quot;); } else {  $cip = &quot;unknown&quot;; } return $cip;}?&gt;</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p ><p >(责任编辑:董建伟)                                 <p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-30 15:21 , Processed in 0.072242 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表