热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

php简单多人聊天界面的设计代码下面来简单介绍一个最简单的登录多人聊天系统的设计,只有四个文件,分别是登录页面login.php、多人聊天界面chat.php、设计数据库操作的Sql.php文件以及注册页面regester.php,其中注册页面和登录页面的代码有%9
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









用户名:
密码:
请输入验证码: 看不清点击图片换一张

点击注册

checkPassword($user, $pwd)){ //$_SESSION["$user"]=true; header("location:chat.php?name=".urlencode($user)); } else { echo ""; } } } }

下面是注册页面regester.php









用户名:
密码:
请输入验证码: 看不清点击图片换一张
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 "返回到登录页面";
			exit();
		}
	}	
	if(isset($_GET['name'])){
		$user=urldecode($_GET['name']);
		$user=$_GET['name'];
	}
	else{
		header("location:login.php");	
	}
	if(isset($_POST['content'])){
		$tmp_cOntent=$_POST['content'];
		$tmp_user=$_POST['user'];
		$tmp_receive=$_POST['selec'];
		$tmp=new Sql();
		$tmp->setDatabase($tmp_user, $tmp_receive, $tmp_content);
		$tmp=$tmp_cOntent=$tmp_user=$tmp_receive=null;
	}
?>








注销

    queryInfor($user); for($i=count($arr)-1;$i>=0;$i--){ echo "
  • ".$arr[$i][1]."在" .$arr[$i][2]."对你说过:

  • "; echo "
  • ".$arr[$i][4]."

  • "; } $arr=$sql->queryQuery($user); for($i=count($arr)-1;$i>=0;$i--){ echo "
  • "."你在".$arr[$i][2]."对" .$arr[$i][3]."说过:

  • "; echo "
  • ".$arr[$i][4]."

  • "; } ?>
" method="post"> 想对说:

聊天界面图:





推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
author-avatar
单莼de笑脸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有