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
<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>
聊天界面图:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

PHP における echo キーワードの役割と使用法の詳細な説明 PHP は、Web 開発で広く使用されているサーバーサイド スクリプト言語です。 echo キーワードは、PHP でコンテンツを出力するために使用されるメソッドです。この記事では、echoキーワードの機能と使い方を詳しく紹介します。機能: echo キーワードの主な機能は、コンテンツをブラウザに出力することです。 Web 開発では、フロントエンド ページにデータを動的に表示する必要がありますが、このとき、echo キーワードを使用してデータをページに出力できます。 e

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

Laravel は、拡張性と効率性に優れた人気の PHP フレームワークであり、開発者が高品質の Web アプリケーションを迅速に構築できる強力なツールとライブラリを多数提供しています。その中でも、LaravelEcho と Pusher は、WebSocket 通信を簡単に実装できる 2 つの非常に重要なツールであり、この記事では、Laravel アプリケーションでこれら 2 つのツールを使用する方法について詳しく説明します。 WebSocket とは何ですか? Webソケット
