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



基本功能:能登陆,聊天,记录在线人数IP事件,能控制聊天的字体颜色,自动把转化聊天中网址为链接地址,能定制聊天室标题、广告信息等等。使用文本作为存储媒体,又兴趣可以参考代码,并且进行扩展。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

其实PHP作为快速开发的脚本语言是很棒的!


===代码===

  1. <?php
  2. /**
  3.  * 黑夜路人简易聊天室
  4.  * 作者: heiyeluren <heiyeluren_at_163.com>
  5.  * 创建: 2005-8-10 22:42
  6.  * 修改: 2005-8-11 23:25
  7.  */
  8. error_reporting(7);
  9. session_start();
  10. header("ContentType:text/html;charset=gb2312");
  11. define("SCRIPT"$_SERVER['SCRIPT_NAME']);
  12. define("CHAT_NOTE""./chat.txt");
  13. define("ONLINE_LIST""./online.txt");
  14. define("REF_TIME", 5);
  15. define("CHAT_NAME""黑夜路人聊天室");
  16. define("AD_MSG""今天是中国情人节, 祝大家情人节快乐!!");
  17. //获取值
  18. if (isset($_GET['action']) && !emptyempty($_GET['action'])) {
  19.  $action = $_GET['action'];
  20. }
  21. //如果已经登陆那么直接跳到聊天界面
  22. if (!isset($_GET['action']) && isset($_SESSION['username'])) {
  23.  header("location:".SCRIPT."?action=chat");
  24. }
  25. //登陆提示
  26. if (!isset($_GET['action'])) 
  27. {
  28.  if (!session_is_registered('username'))
  29.  {
  30.   echo " <p><h3 align=center>[ ".CHAT_NAME." ] &copy; 2005</h3></p>
  31.    <p align=center>
  32.    <form action=".SCRIPT."?action=login method=post>
  33.    呢称: <input type=text size=25 maxlength=30 name=login_user>
  34.    <input type=submit value=聊天>
  35.    </form></p>
  36.    ";
  37.   exit;
  38.  }
  39. }
  40. //校验登陆
  41. if ($action=='login')
  42. {
  43.  if (isset($_POST['login_user']) && !emptyempty($_POST['login_user'])) {
  44.   $username = $_POST['login_user'];
  45.  } else {
  46.   $username = "游客";
  47.  }
  48.  session_register('username');
  49.  save_online($username, get_client_ip());
  50.  header("location:".SCRIPT."?action=chat");
  51. }
  52. //开始聊天www.knowsky.com
  53. if ($action=="chat")
  54. {
  55.  $online_sum = get_online_sum();
  56.  echo "<head><title>[ ".CHAT_NAME." ]</title></head><center>
  57. <body bgcolor=#C4BFB9 style='font-size:12px;'>
  58.    <div style='border:1px solid #999966; width:802px;height:450'>
  59. <iframe src='".SCRIPT."?action=show'
  60. name=show_win width=800 height=450 scrolling=auto frameborder=0></iframe>
  61. </div><br>
  62.    <marquee width=70% scrollamount=2> ".AD_MSG." </marquee>   
  63. [当前在线:$online_sum]
  64.    <iframe src='".SCRIPT."?action=say' name=say_win width=800
  65. height=60 scrolling=no frameborder=0>
  66.  ";
  67. }
  68. //说话界面
  69. if ($action=="say")
  70. {
  71.  echo "<head><title>[ ".CHAT_NAME." ]</title></head><center>
  72. <body bgcolor=#C4BFB9 style='font-size:12px;'>
  73.   <form action=".SCRIPT."?action=save method=post name=chat
  74. onSubmit='return check()'>
  75.   [".$_SESSION['username']."]说:<input type=text size=80
  76. maxlength=500 name=chatmsg style=' background-color:#99CC99;
  77. width:550px; height:22px; border:1px solid:#000000'>
  78.   <select name=usercolor>
  79.   <OPTION selected style='COLOR: #000000' value='000000'>默认颜色</OPTION>
  80.   <OPTION style='COLOR: #000000' value='#000000'>黑色沉静</OPTION> 
  81.   <option style='COLOR: #ff0000' value='#FF0000'>红色热情</option> 
  82.   <option style='COLOR: #0000ff' value='#0000FF'>蓝色开朗</option> 
  83.   <option style='COLOR: #ff00ff' value='#FF00FF'>桃色浪漫</option> 
  84.   <option style='COLOR: #009900' value='#009900'>绿色青春</option> 
  85.   <option style='COLOR: #009999' value='#009999'>青色清爽</option> 
  86.   <option style='COLOR: #990099' value='#990099'>紫色拘谨</option> 
  87.   <option style='COLOR: #990000' value='#990000'>暗夜兴奋</option> 
  88.   <option style='COLOR: #000099' value='#000099'>深蓝忧郁</option> 
  89.   <option style='COLOR: #999900' value='#999900'>卡其制服</option> 
  90.   <option style='COLOR: #ff9900' value='#FF9900'>镏金岁月</option> 
  91.   <option style='COLOR: #0099ff' value='#0099FF'>湖波荡漾</option> 
  92.   <option style='COLOR: #9900ff' value='#9900FF'>发亮蓝紫</option> 
  93.   <option style='COLOR: #ff0099' value='#FF0099'>爱的暗示</option> 
  94.   <option style='COLOR: #006600' value='#006600'>墨绿深沉</option> 
  95.   <option style='COLOR: #333333' value='#333333'>灰色轨迹</option> 
  96.   <option style='COLOR: #999999' value='#999999'>伦敦灰雾</option> 
  97.   </select>
  98.   <input type=submit value='说话' style='background-color:#ffffff'>
  99. <a href=".SCRIPT."?action=logoff title=退出聊天室
  100. target=_top οnclick='return confirm("你确定要退出聊天室吗?")'>退出</a>
  101.   </form>
  102.   <script>function check(){if(document.chat.chatmsg.value=='')
  103. {;alert('请输入聊天信息!');return false;}return true;}</script>
  104.   ";
  105. }
  106. //保存说话
  107. if ($action=="save")
  108. {
  109.  if ($_POST['chatmsg']!="") {
  110.   save_chat($_POST['chatmsg'], $_SESSION['username'], $_POST['usercolor']);
  111.  }
  112.  header("location:".SCRIPT."?action=say");
  113. }
  114. //显示聊天记录
  115. if ($action=="show")
  116. {
  117.  echo "<body style='font-size:12px' οnlοad='scrollit()'>";
  118.  echo "<META HTTP-EQUIV=REFRESH 
  119. CONTENT='".REF_TIME.";URL=".SCRIPT."?action=show'>";
  120.  if (file_exists(CHAT_NOTE)) {
  121.   $chat_msg = @file_get_contents(CHAT_NOTE);
  122.   echo $chat_msg;
  123.  } else {
  124.   echo "目前没有人说话";
  125.  }
  126. }
  127. //退出聊天室
  128. if ($action=="logoff")
  129. {
  130.  unset($_SESSION['username']);
  131.  session_destroy();
  132.  header("location:".SCRIPT);
  133. }
  134. /* 基本函数 */
  135. //保存聊天记录函数
  136. function save_chat($msg$user$color)
  137. {
  138.  if (!$fp = fopen(CHAT_NOTE, "a+")) {
  139.   die('创建聊天记录文件失败, 请检查是否有权限.');
  140.  }
  141.  $msg = htmlspecialchars($msg);
  142.  $msg = preg_replace('/([http|ftp:])*([a-zA-])
  143. +/.([a-zA-Z0-9_-])+/.([a-zA-Z0-9_-])+(a-zA-Z0-9_)*/', '
  144. <a href=/0 target=_blank>/0</a>', $msg);
  145.  $msg = preg_replace('/([a-zA-Z0-9_/.])+@([a-zA-Z0-9-])
  146. +/.([a-zA-Z0-9-]{2,4})+/', '<a href=mailto:/0>/0</a>', $msg);
  147.  $msg = date('H:i:s')." [".$user."]说: 
  148. <font color='".$color."'>".$msg."</font><br>/r/n";
  149.  if (!fwrite($fp$msg)) {
  150.   die('写入聊天记录失败.');
  151.  }
  152.  fclose($fp);
  153. }
  154. //写在线人信息
  155. function save_online($user$ip)
  156. {
  157.  if (!$fp = fopen(ONLINE_LIST, "a+")) {
  158.   die("创建在线列表文件失败, 请检查是否有权限.");
  159.  }
  160.  $user = str_replace("|"""$user);
  161.  $line = $user."|".$ip."|".time()."/r/n";
  162.  if (!fwrite($fp$line)) {
  163.   die("写入在线列表失败.");
  164.  }
  165.  fclose($fp);
  166. }
  167. //获取在线人数
  168. function get_online_sum()
  169. {
  170.  if (file_exists(ONLINE_LIST)) {
  171.   $online_msg = file(ONLINE_LIST);
  172.   return count($online_msg);
  173.  } else {
  174.   return 0;
  175.  }
  176. }
  177. //获取当前登陆用户IP
  178. function get_client_ip()
  179. {
  180.  if ($_SERVER['REMOTE_ADDR']) {
  181.   $cip = $_SERVER['REMOTE_ADDR'];
  182.  } elseif (getenv("REMOTE_ADDR")) {
  183.   $cip = getenv("REMOTE_ADDR");
  184.  } elseif (getenv("HTTP_CLIENT_IP")) {
  185.   $cip = getenv("HTTP_CLIENT_IP");
  186.  } else {
  187.   $cip = "unknown";
  188.  }
  189.  return $cip;
  190. }
  191. ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值