目录
点击注册" >点击注册
注销" >注销
首页 后端开发 php教程 php简略多人聊天界面的设计代码

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

Jun 13, 2016 am 11:38 AM
echo gt lt quot user

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

<span style="font-size:18px; color:#333333"><meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7">
<title>welcom to login page</title>
<style type="text/css">body {	margin:auto;width:500px;background:url('table.jpg')no-repeat 200px;}div {	width:550px;padding-top:200px;	overflow:hidden;}form {    padding:3px;	border:dashed 1px green;	font-size:23px;	color:red;	background:white;}form input {	height:25px;}form span {	width:150px;height:40px;text-align:center;	display:inline-block;}form span.pic {	font-size:12px;	display:inline;}form  img{	  position: relative;	  left: 10px;	  top: 15px;	  padding-right:3px;}#show {display:inline;height:20px;margin-left:20px;font-size:12px;}#user {display:inline;font-size:14px;}#pwd {display:inline;font-size:14px;}.login {font-size:21px;align:center;display:block;height:26px;margin-left:150px;}</style>
<div>
<form action="login.php" method="post">
<span>用户名:</span><input type="text" size="20" name="user"><span id="user"></span><br><span>密码:</span><input type="text" size="20" name="pwd"><span id="pwd"></span><br><span>请输入验证码:</span><input type="text" size="10" name="check"><img  src="/static/imghw/default1.png" data-src="tupian.php" class="lazy"   style="max-width:90%" onclick="javascript:this.+Math.random()" alt="php简略多人聊天界面的设计代码" > <span class="pic">看不清点击图片换一张</span><br><span id="show"></span><input class="login" type="submit" value="登录">
</form>
<h2 id="a-href-regester-php-点击注册-a"><a href="regester.php">点击注册</a></h2>
</div>
<?php session_id("yanzhen");	session_start();	$chars=strtolower($_SESSION['yanzhen']);//获得验证码;	if(isset($_POST['check'])){		if(trim($_POST['check'])==""){			echo "<script type=text/javascript>";			echo "document.getElementById('show').innerHTML='请输入验证码'";			echo "";exit();		}		if($chars!=trim($_POST['check'])){			echo "<script type="text/javascript">";			echo "document.getElementById('show').innerHTML='验证码输入错误'";			echo "</script>";exit();		}	}	if(isset($_POST['user'])){		//check the user name		$user=trim($_POST['user']);		if($user==""){			echo "<script type="text/javascript">";			echo "document.getElementById('user').innerHTML='用户名为空'";			echo "</script>";exit();		}		if(preg_match("/^[\x7f-\xff]+$/", $user)==0){			echo "<script type="text/javascript">";			echo "document.getElementById('user').innerHTML='用户名只允许汉字'";			echo "</script>";exit();		}		if(isset($_POST['pwd'])){			$pwd=trim($_POST['pwd']);			if(preg_match("/^[a-z0-9\-]+$/i", $pwd)==0){				echo "<script type="text/javascript">";				echo "document.getElementById('pwd').innerHTML='密码只允许数字、下划线和字母'";				echo "</script>";exit();			}			if($pwd==''){				echo "<script type="text/javascript">";				echo "document.getElementById('pwd').innerHTML='密码为空'";				echo "</script>";			}else {				include_once 'Sql.php';				$sql = new Sql();				if($sql->checkPassword($user, $pwd)){					//$_SESSION["$user"]=true;					header("location:chat.php?name=".urlencode($user));					}				else {					echo "<script type="text/javascript">";					echo "document.getElementById('show').innerHTML='{$sql->infor}'";					echo "</script>";				}			}		}	}</span>
登录后复制

下面是注册页面regester.php

<span style="font-size:18px; color:#333333"><meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7">
<title>welcom to login page</title>
<style type="text/css">body {	margin:auto;width:500px;background:url('table.jpg')no-repeat 200px;}div {	width:550px;padding-top:200px;	overflow:hidden;}form {    padding:3px;	border:dashed 1px green;	font-size:23px;	color:red;	background:white;}form input {	height:25px;}form span {	width:150px;height:40px;text-align:center;	display:inline-block;}form span.pic {	font-size:12px;	display:inline;}form  img{	  position: relative;	  left: 10px;	  top: 15px;	  padding-right:3px;}#show {display:inline;height:20px;margin-left:20px;font-size:12px;}.login {font-size:21px;align:center;display:block;height:26px;margin-left:150px;}</style>
<div><form action="regester.php" method="post">
<span>用户名:</span><input type="text" size="20" name="user"><span id="user"></span><br><span>密码:</span><input type="text" size="20" name="pwd"><span id="pwd"></span><br><span>请输入验证码:</span><input type="text" size="10" name="check"><img  src="/static/imghw/default1.png" data-src="tupian.php" class="lazy"   style="max-width:90%" onclick="javascript:this.+Math.random()" alt="php简略多人聊天界面的设计代码" > <span class="pic">看不清点击图片换一张</span><br><span id="show"></span><input class="login" type="submit" value="注册">
</form></div>
<?php require_once 'Sql.php';if(isset($_POST['user'])){		//check the user name		$user=trim($_POST['user']);		if($user==""){			echo "<script type=text/javascript>";			echo "document.getElementById('user').innerHTML='用户名为空'";			echo "";exit();		}		if(strlen($user)>6){			echo "<script type="text/javascript">";			echo "document.getElementById('user').innerHTML='用户名太长'";			echo "</script>";exit();		}		if(preg_match("/^[\x7f-\xff]+$/", $user)==0){			echo "<script type="text/javascript">";			echo "document.getElementById('user').innerHTML='用户名只允许汉字'";			echo "</script>";exit();		}		if(isset($_POST['pwd'])){			$pwd=trim($_POST['pwd']);			if(preg_match("/^[a-z0-9\-]+$/i", $pwd)==0){				echo "<script type="text/javascript">";				echo "document.getElementById('pwd').innerHTML='密码只允许数字、下划线和字母'";				echo "</script>";exit();			}			if($pwd==''){				echo "<script type="text/javascript">";				echo "document.getElementById('pwd').innerHTML='密码为空'";				echo "</script>";exit();			}elseif (strlen($pwd)>=19){				echo "<script type="text/javascript">";				echo "document.getElementById('pwd').innerHTML='密码长度太长'";				echo "</script>";exit();			}			else {				include_once 'Sql.php';				$sql = new Sql();				$sql->regerster($user, $pwd);			}		}	}		?></span>
登录后复制

下面是操作数据库的Sql.php文件

<span style="font-size:18px; color:#333333"><?phpheader ("charset=utf-8");class Sql {	protected $conn;	public $infor='';	public function __construct(){		$this->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;$i<count for return public function queryquery from where sendor="$sendor" order by id desc mysql_query names gbk>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;$i<count for return public function setdatabase h:i:s mysql_query names gbk>conn);		$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;$i<count return public function logout set status="0" where user="$name" mysql_query names gbk>conn) 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);	}}</count></count></count></span>
登录后复制

下面是用户登录之后的多人聊天界面chat.php,说是多人聊天,其实是很粗糙的界面,就是一个ul标签列出了所有人传达给你的最新五条信息,多余信息会被自动删除,然后你可以选择任意一个人写下对他/她说的话,然后就是刷新显示。其实原理挺简单的。

<span style="font-size:18px; color:#333333"><?php require_once 'Sql.php';	session_id("yanzhen");	session_start();	if(isset($_GET['id'])&&isset($_GET['log'])){		if($_GET['id']==1){			$og= new Sql();			$sess_name=urldecode($_GET['log']);			$og->logout($sess_name);			$_SESSION["$sess_name"]=false;			header("content-type=text/html;charset=utf-8");			echo "注销成功";			echo "<a href="login.php">返回到登录页面</a>";			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;	}?><meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7">
<title>welcom to chat page</title>
<style type="text/css">#area {margin:auto;width:500px;color:red;background-color:grey;}#area ul li{height:20px;list-style-type:none;}form {margin:auto;width:500px;height:35px;color:white;   background-color:black;}h3 {padding-left:200px;}   </style>
<h3 id="a-href-chat-php-id-amp-log-lt-php-echo-urlencode-user-gt-注销-a"><a href="chat.php?id=1&log=<?php%20echo%20urlencode(%24user);?>">注销</a></h3>
<div id="area"><ul>
<?php $sql= new Sql();	$arr=array();	$arr=$sql->queryInfor($user);	for($i=count($arr)-1;$i>=0;$i--){		echo "<li>".$arr[$i][1]."在"					.$arr[$i][2]."对你说过:</li>
<br>";		echo "<li>".$arr[$i][4]."</li>
<br>";	}	$arr=$sql->queryQuery($user);	for($i=count($arr)-1;$i>=0;$i--){		echo "<li style="text-align:right;color:green">"."你在".$arr[$i][2]."对"		.$arr[$i][3]."说过:</li>
<br>";		echo "<li style="text-align:right;color:green">".$arr[$i][4]."</li>
<br>";	}?></ul></div>
<form action="chat.php?name=<?php%20echo%20urlencode(%24user);?>" method="post">
<input type="hidden" name="user" value="<?php echo $user; ?>"><?php echo $user;?>想对<select name="selec"><?php $arr=$sql->getSenderAll($user);	for($i=0;$i<count if echo value='\"$arr[$i]\"'>$arr[$i]";	}?></count></select>说:<input name="content" type="text" size="30" maxlength="30/"><input type="submit" value="发送">
</form>
<?php //show the information when chatting?></span>
登录后复制

聊天界面图:




本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

华为GT3 Pro和GT4的差异是什么? 华为GT3 Pro和GT4的差异是什么? Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

修复:截图工具在 Windows 11 中不起作用 修复:截图工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

五个精选的Go语言开源项目,带你探索技术世界 五个精选的Go语言开源项目,带你探索技术世界 Jan 30, 2024 am 09:08 AM

在当今科技快速发展的时代,编程语言也如雨后春笋般涌现出来。其中一门备受瞩目的语言就是Go语言,它以其简洁、高效、并发安全等特性受到了许多开发者的喜爱。Go语言以其强大的生态系统而著称,其中有许多优秀的开源项目。本文将介绍五个精选的Go语言开源项目,带领读者一起探索Go语言开源项目的世界。KubernetesKubernetes是一个开源的容器编排引擎,用于自

Go语言开发必备:5个热门框架推荐 Go语言开发必备:5个热门框架推荐 Mar 24, 2024 pm 01:15 PM

《Go语言开发必备:5个热门框架推荐》Go语言作为一门快速、高效的编程语言,受到越来越多开发者的青睐。为了提高开发效率,优化代码结构,很多开发者选择使用框架来快速搭建应用。在Go语言的世界中,有许多优秀的框架可供选择。本文将介绍5个热门的Go语言框架,并提供具体的代码示例,帮助读者更好地理解和使用这些框架。1.GinGin是一个轻量级的Web框架,拥有快速

如何修复无法连接到iPhone上的App Store错误 如何修复无法连接到iPhone上的App Store错误 Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

使用Golang的Web框架Echo框架实现分布式任务调度 使用Golang的Web框架Echo框架实现分布式任务调度 Jun 24, 2023 am 11:49 AM

随着互联网的发展和信息技术的进步,大数据时代已经来临,数据分析、机器学习等领域也得到了广泛的应用。在这些领域中,任务调度是一个不可避免的问题。如何实现高效的任务调度,对于提高效率至关重要。在本篇文章中,将介绍如何使用Golang的Web框架Echo框架实现分布式任务调度。一、介绍Echo框架Echo是一个高性能、可伸缩、轻量级的GoWeb框架。它基于HTT

Laravel开发:如何使用Laravel Echo和Pusher实现WebSockets通信? Laravel开发:如何使用Laravel Echo和Pusher实现WebSockets通信? Jun 13, 2023 pm 05:01 PM

Laravel是一个流行的PHP框架,具有高度可扩展性和高效性,它提供了很多强大的工具和库,让开发者可以快速构建高质量的Web应用程序。其中,LaravelEcho和Pusher是两个非常重要的工具,通过它们可以很容易地实现WebSockets通信,本文将详细介绍如何在Laravel应用程序中使用这两个工具。什么是WebSockets?WebSockets

See all articles