php简略多人聊天界面的设计代码
php简单多人聊天界面的设计代码
下面来简单介绍一个最简单的登录多人聊天系统的设计,只有四个文件,分别是登录页面login.php、多人聊天界面chat.php、设计数据库操作的Sql.php文件以及注册页面regester.php,其中注册页面和登录页面的代码有%98的代码是雷同的。都是采用同样的结构。难点其实还是在Sql.php文件中,因为这个是涉及到数据库操作的文件,所以很多问题基本都是由这个页面引起的,当然还有那个多人聊天界面也是很容易出问题。总体说来其实无非就是从数据库中根据用户名和接收者的名字取出相应的对话内容。这个缺点挺大的,在实际应用中几乎是毫无用武之地的,仅仅是为了学习才会想到这样做的,对话内容放在数据库里,那也是很耗费系统资源的行为。不过保存少量的对话信息应该还是可以的。闲话就不多说了,只要能够看懂Sql.php文件的代码基本上就看懂了这整个多人聊天系统,注意我的四个文件全部都是放在一个文件下,所以当你要复制这个系统时,请务必保证这四个文件都是处于同一个文件夹下,并且最好再次确保这四个文件是用utf-8编码,如果不是请修改为UTF-8编码。要不然就会出现中文乱码现象。一个汉字在GBK编码下占用2个字符,而在UTF-8编码下占用三个字符,这一点可以用strlen()函数检验。这里要建立两个表,两个数据表如下所示:
这个表名叫comm,是专门用于存放用户对话信息的数据表:
下面的表名叫rege,是专门用于存放用户注册信息的:
下面是登录页面login.php
welcom to login page
下面是注册页面regester.php
welcom to login page
";
echo "document.getElementById('user').innerHTML='用户名为空'";
echo "";exit();
}
if(strlen($user)>6){
echo "";exit();
}
if(preg_match("/^[x7f-xff]+$/", $user)==0){
echo "";exit();
}
if(isset($_POST['pwd'])){
$pwd=trim($_POST['pwd']);
if(preg_match("/^[a-z0-9-]+$/i", $pwd)==0){
echo "";exit();
}
if($pwd==''){
echo "";exit();
}elseif (strlen($pwd)>=19){
echo "";exit();
}
else {
include_once 'Sql.php';
$sql = new Sql();
$sql->regerster($user, $pwd);
}
}
}
?>
下面是操作数据库的Sql.php文件
conn=mysql_connect("localhost","like","admin");
mysql_select_db("test");
if(!$this->conn) die("fail to connect the mysql database");
}
public function queryInfor($receiver){
$arr=array();
$receiver=iconv("utf-8","gbk",$receiver);
$query="select * from `comm` where recever='$receiver' order by id desc";
mysql_query("set names gbk");
$result=mysql_query($query,$this->conn) or die("fuck error");
while($row=mysql_fetch_row($result)){
$arr[]=$row;
}
if(count($arr)>5){//保存的信息超过五条,就删除掉多余信息
for($i=count($arr)-1;$i>4;$i--){
mysql_query("delete from `comm` where id={$arr[$i][0]}") or die("fail to delete the extra information");
unset($arr[$i]);
}
}
mysql_free_result($result);
for($i=0;$iconn) or die("fuck error");
while($row=mysql_fetch_row($result)){
$arr[]=$row;
}
if(count($arr)>5){//保存的信息超过五条,就删除掉多余信息
for($i=count($arr)-1;$i>4;$i--){
mysql_query("delete from `comm` where id={$arr[$i][0]}") or die("fail to delete the extra information");
unset($arr[$i]);
}
}
mysql_free_result($result);
for($i=0;$iconn);
$query="insert into `comm`(sendor,time,recever,content)values('$sender','$timestamp','$receiver','$content')";
mysql_query($query,$this->conn) or die("insert error");
}
public function getSenderAll($name){
$arr= array();
$name=iconv("utf-8","gbk",$name);
$query="select user from `rege` where 1 order by id desc";
mysql_query("set names gbk",$this->conn);
$result=mysql_query($query,$this->conn) or die("no data in database");
while($row=mysql_fetch_row($result)){
$arr[]=$row[0];
}
for($i=0;$iconn) or die("注销失败");
}
public function checkPassword($name,$password=null){
$name=iconv("utf-8","gbk",$name);
$queryP="select * from `rege` where user='$name' and password='$password' limit 1";
$queryQ="select * from `rege` where user='$name' limit 1";
mysql_query("set names gbk",$this->conn);
if($password!=null){
mysql_query($queryP,$this->conn) or die("ass error");
if(mysql_affected_rows($this->conn)>0){
$result=mysql_query("select status from `rege` where user='$name'");
$row=mysql_fetch_row($result);
if($row[0]) {
$this->infor="该用户已经登录";
return false;
}
$query="update `rege` set status=true where user='$name'";
mysql_query($query,$this->conn);
return true;
}else{
$this->infor="用户名或密码错误";
return false;
}
}
else {
mysql_query($queryQ,$this->conn) or die("sorry error");
if(mysql_affected_rows($this->conn)>0){
$this->infor="该用户名已被注册";
return false;
}
return true;
}
}
public function regerster($name,$pwd){
$name=iconv("utf-8","gbk",$name);
$query="INSERT INTO `rege`(`user`,`password`) VALUES ('$name','$pwd')";
mysql_query("set names gbk",$this->conn);
mysql_query($query,$this->conn) or die("注册失败");
$this->infor="注册成功";
}
public function close(){
mysql_close($this->conn);
}
}
下面是用户登录之后的多人聊天界面chat.php,说是多人聊天,其实是很粗糙的界面,就是一个ul标签列出了所有人传达给你的最新五条信息,多余信息会被自动删除,然后你可以选择任意一个人写下对他/她说的话,然后就是刷新显示。其实原理挺简单的。
logout($sess_name);
$_SESSION["$sess_name"]=false;
header("content-type=text/html;charset=utf-8");
echo "注销成功";
echo "
聊天界面图:

php简略多人聊天界面的设计代码
- 请教小弟我怎么才能把这个alert(t2)打印出来呢
Feb 23, 2017
php图表,该如何处理
Feb 13, 2017
- php-fpm启动报错Segmentationfault$php_fpm_BIN$php_opts
Aug 07, 2017
- 问一下这个JS数据怎么解码
Feb 24, 2017
求各位大神解决一下Apache安装有关问题
Feb 21, 2017
thinkphp如何编写自己函数和类,放在什么位置,怎么调用,求教
Jan 20, 2017
- PHP扩充模块解包(由term_to_binary生成的)Erlangextterm格式的二进制数据
Aug 23, 2017
- php 多个二进制流图片/文件怎么办
Jan 24, 2017