首页  >  文章  >  后端开发  >  PHP程序百行代码快速构建简易聊天室_PHP教程

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

WBOY
WBOY原创
2016-07-21 14:57:37985浏览

基本功能:能登陆,聊天,记录在线人数IP事件,能控制聊天的字体颜色,自动把转化聊天中网址为链接地址,能定制聊天室标题、广告信息等等。使用文本作为存储媒体,又兴趣可以参考代码,并且进行扩展。

 

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

 

===代码===

以下为引用的内容:
/**
* 黑夜路人简易聊天室
* 作者: heiyeluren
* 创建: 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 "

[ ".CHAT_NAME." ] © 2005


  


  


   呢称:
  
  

   ";
  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.knowsky.com
if ($action=="chat")
{
$online_sum = get_online_sum();
echo "[ ".CHAT_NAME." ]


  

name=show_win width=800 height=450 scrolling=auto frameborder=0>


   ".AD_MSG."   
[当前在线:$online_sum]
   height=60 scrolling=no frameborder=0>
";
}

//说话界面
if ($action=="say")
{
echo "[ ".CHAT_NAME." ]


 
onSubmit='return check()'>
  [".$_SESSION['username']."]说:maxlength=500 name=chatmsg style=' background-color:#99CC99;
width:550px; height:22px; border:1px solid:#000000'>
 
 
target=_top onclick='return confirm("你确定要退出聊天室吗?")'>退出
 
  <script>function check(){if(document.chat.chatmsg.value=='')<br />{;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 "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_)*/', '
\0', $msg);
$msg = preg_replace('/([a-zA-Z0-9_\.])+@([a-zA-Z0-9-])
+\.([a-zA-Z0-9-]{2,4})+/', '\0', $msg);
$msg = date('H:i:s')." [".$user."]说:
".$msg."
\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;
}
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/364008.htmlTechArticle基本功能:能登陆,聊天,记录在线人数IP事件,能控制聊天的字体颜色,自动把转化聊天中网址为链接地址,能定制聊天室标题、广告信...
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn