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