php专区

 首页 > php专区 > PHP高级 > 缓存异常处理 > php简略多人聊天界面的设计代码

php简略多人聊天界面的设计代码

分享到:
【字体:
导读:
         摘要:php简单多人聊天界面的设计代码下面来简单介绍一个最简单的登录多人聊天系统的设计,只有四个文件,分别是登录页面login.php、多人聊天界面chat.php、设计数据库操作的Sql.php文件以及注册页面regester.php,其中注册页面和登录页面的代码有%9...

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简略多人聊天界面的设计代码
php中echo、print、print_r差异
php中echo、print、print_r差异 php中echo、print、print_r区别概述: 三者均可以输出信息,但是各有自己的特点:   类型 输出变量个数 输出变量类型 返回值 速度 echo 语言结构 一个或多个 简单类型变量,如int、string 无 最快 print 语言结构 一个 简单类型变量,如int、string int 快 print_r 函数 一个 复...
微信/易信公共平台开发(4):公众号调试...
微信/易信公共平台开发(4):公众号调试器 (仿真微信平台,提供PHP源码) 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码) 开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志。当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的。我在开发过程中,编写...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……