Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie einen einfachen Chatroom mit PHP+MySQL+Ajax

So implementieren Sie einen einfachen Chatroom mit PHP+MySQL+Ajax

墨辰丷
墨辰丷Original
2018-05-31 15:56:062008Durchsuche

In diesem Artikel wird hauptsächlich die Implementierungsmethode des leichten PHP+MySQL+Ajax-Chatrooms vorgestellt und die spezifischen Schritte und zugehörigen Implementierungstechniken von PHP+MySQL zur Implementierung der Echtzeit-Chatroom-Funktion anhand von Beispielen analysiert Ich muss darauf verweisen

Ich habe eine QQ-Chat- und Dating-Website erstellt und wollte eine Chat-Funktion hinzufügen, also habe ich PHP verwendet, um einen einfachen und leistungsstarken Chatraum zu erstellen

1 . Erstellen Sie eine MySQL-Datenbanktabelle:

Code kopieren Der Code lautet wie folgt:

Tabellenchat erstellen( id bigint AUTO_INCREMENT,Benutzername varchar(20), chatdate datetime,msg varchar(500), Primary Key (id));

2. Schreiben Sie die vorgeschlagene Datenbankverbindungsfunktion:

dbconnect.php

<?php
function db_connect()
{
 date_default_timezone_set("Asia/Shanghai");
 $link = mysql_connect("xxx.xxx.xxx.xxx", "databasename", "password")
      or die(&#39;无法连接: &#39; . mysql_error());
 mysql_select_db("databasename") or die(&#39;没有你找到指定数据库&#39;);
 return true;
}
function quote($strText)
{
  $Mstr = addslashes($strText);
  return "&#39;" . $Mstr . "&#39;";
}
function isdate($d)
{
  $ret = true;
  try
  {
    $x = date("d",$d);
  }
  catch (Exception $e)
  {
    $ret = false;
  }
  echo $x;
  return $ret;
}
?>

3. Schreiben Sie Ajax-Sende- und Empfangsfunktionen:

Ajax-Sendefunktion chat_send_ajax.php

<?php
   require_once(&#39;dbconnect.php&#39;);
   db_connect();
   $msg = iconv("UTF-8","GB2312",$_GET["msg"]);
   $dt = date("Y-m-d H:i:s");
   $user = iconv("UTF-8","GB2312",$_GET["name"]);
   $sql="INSERT INTO chat(USERNAME,CHATDATE,MSG) " .
     "values(" . quote($user) . "," . quote($dt) . "," . quote($msg) . ");";
     echo $sql;
   $result = mysql_query($sql);
   if(!$result)
   {
    throw new Exception(&#39;Query failed: &#39; . mysql_error());
    exit();
   }
?>

ajax Empfangsfunktion chat_recv_ajax.php

<?php
header("Content-Type:text/html;charset=gb2312");
header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
  header("Cache-Control: no-cache, must-revalidate");
  header("Pragma: no-cache");
   require_once(&#39;dbconnect.php&#39;);
   db_connect();
   $sql = "SELECT *, date_format(chatdate,&#39;%Y年%m月%d日 %r&#39;) as cdt from chat order by ID desc limit 200";
   $sql = "SELECT * FROM (" . $sql . ") as ch order by ID";
   $result = mysql_query($sql) or die(&#39;Query failed: &#39; . mysql_error());
   // Update Row Information
   $msg="<table border=&#39;0&#39; style=&#39;font-size: 10pt; color: white; font-family: verdana, arial;&#39;>";
   while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
   {
      $msg = $msg . "<tr><td>" . $line["cdt"] . " </td>" .
        "<td>" . $line["username"] . ": </td>" .
        "<td>" . $line["msg"] . "</td></tr>";
   }
   $msg=$msg . "</table>";
   echo $msg;
?>

4. Chatroom-Seite:

chat.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  <title>聊天页面</title>
<script type="text/javascript">
var t = setInterval(function(){get_chat_msg()},5000);
//
// General Ajax Call
//
var oxmlHttp;
var oxmlHttpSend;
function get_chat_msg()
{
  if(typeof XMLHttpRequest != "undefined")
  {
    oxmlHttp = new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  {
    oxmlHttp = new ActiveXObject("Microsoft.XMLHttp");
  }
  if(oxmlHttp == null)
  {
    alert("浏览器不支持XML Http Request!");
    return;
  }
  oxmlHttp.onreadystatechange = get_chat_msg_result;
  oxmlHttp.open("GET",encodeURI("chat_recv_ajax.php"),true);
  oxmlHttp.send(null);
}
function get_chat_msg_result()
{
  if(oxmlHttp.readyState==4 || oxmlHttp.readyState=="complete")
  {
    if (document.getElementById("p_CHAT") != null)
    {
      document.getElementById("p_CHAT").innerHTML = oxmlHttp.responseText;
      oxmlHttp = null;
    }
    var scrollp = document.getElementById("p_CHAT");
    scrollp.scrollTop = scrollp.scrollHeight;
  }
}
function set_chat_msg()
{
  if(typeof XMLHttpRequest != "undefined")
  {
    oxmlHttpSend = new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  {
    oxmlHttpSend = new ActiveXObject("Microsoft.XMLHttp");
  }
  if(oxmlHttpSend == null)
  {
    alert("浏览器不支持XML Http Request!");
    return;
  }
  var url = "chat_send_ajax.php";
  var strname="noname";
  var strmsg="";
  if (document.getElementById("txtname") != null)
  {
    strname = document.getElementById("txtname").value;
    document.getElementById("txtname").readOnly=true;
  }
  if (document.getElementById("txtmsg") != null)
  {
    strmsg = document.getElementById("txtmsg").value;
    document.getElementById("txtmsg").value = "";
  }
  url += "?name=" + strname + "&msg=" + strmsg;
  oxmlHttpSend.open("GET",encodeURI(url),true);
  oxmlHttpSend.send(null);
}
function clickBtn(e)
 {
  if(window.event.keyCode==13)
  {
  var id=e.id;
  switch(id)
  {
   case "txtmsg":
   document.getElementById("Submit2").click();
   window.event.returnValue=false;
   break;
   }
  }
}
function fRandomBy(under, over){
switch(arguments.length){
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
}
function SetTxtName(){
var i=fRandomBy(10);
if(i==0)document.getElementById(&#39;txtname&#39;).value=&#39;无敌战神&#39;;
if(i==1)document.getElementById(&#39;txtname&#39;).value=&#39;令狐冲&#39;;
if(i==2)document.getElementById(&#39;txtname&#39;).value=&#39;西门吹雪&#39;;
if(i==3)document.getElementById(&#39;txtname&#39;).value=&#39;超级玛丽&#39;;
if(i==4)document.getElementById(&#39;txtname&#39;).value=&#39;奥巴马&#39;;
if(i==5)document.getElementById(&#39;txtname&#39;).value=&#39;恐怖分子&#39;;
if(i==6)document.getElementById(&#39;txtname&#39;).value=&#39;聊斋奇女子&#39;;
if(i==7)document.getElementById(&#39;txtname&#39;).value=&#39;天朝?潘?;
if(i==8)document.getElementById(&#39;txtname&#39;).value=&#39;中500万了&#39;;
if(i==9)document.getElementById(&#39;txtname&#39;).value=&#39;神级奇葩&#39;;
if(i==10)document.getElementById(&#39;txtname&#39;).value=&#39;爱你不是两三天&#39;;
}
</script>
</head>
<body onload="SetTxtName();">
  <p style="border-right: black thin solid; border-top: black thin solid;
    border-left: black thin solid; border-bottom: black thin solid;
    background:#fff url(&#39;http://www.ihaonet.com/chat/blue.jpg&#39;) repeat-x left top;
    height: 450px;width: 500px; ">
    <table style="width:100%; height:100%">
      <tr>
        <td colspan="2" style="font-weight: bold; font-size: 16pt; color: white; font-family: verdana, arial;
          text-align: center">
          聊天窗口--全球最大QQ聊天交友网站</td>
      </tr>
      <tr>
        <td colspan="2" style="font-weight: bold; font-size: 16pt; color: white; font-family: verdana, arial;
          text-align: left">
          <table style="font-size: 12pt; color: white; font-family: Verdana, Arial;border: white thin solid; ">
            <tr>
              <td style="width: 100px">
                名字:</td>
              <td style="width: 100px"><input id="txtname" style="width: 150px" type="text" name="name" maxlength="15" value="匿名" /></td>
            </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td style="vertical-align: middle;" valign="middle" colspan="2">
          <p style="width: 480px; height: 300px; border-right: white thin solid; border-top: white thin solid; font-size: 10pt; border-left: white thin solid; border-bottom: white thin solid; font-family: verdana, arial; overflow:scroll; text-align: left;" id="p_CHAT">
          </p>
        </td>
      </tr>
      <tr>
        <td style="width: 310px">
          <input id="txtmsg" style="width: 350px" type="text" name="msg" onkeydown="return clickBtn(this)"/></td>
        <td style="width: 85px">
          <input id="Submit2" style="font-family: verdana, arial" type="button" value="发送" onclick="set_chat_msg()"/></td>
      </tr>
      <tr>
        <td colspan="1" style="font-family: verdana, arial; text-align: center; width: 350px;">
          </td>
        <td colspan="1" style="width: 85px; font-family: verdana, arial; text-align: center">
        </td>
      </tr>
    </table>
  </p>
</body>
</html>

Die Darstellung ist wie folgt:

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe es wird für das Studium aller hilfreich sein.

Verwandte Empfehlungen:

Wie PHP Systembefehle durch Bypass-Deaktivierungsfunktionen ausführt

Über die E-Mail-Adresse von PHP senden

Eine Zusammenfassung der Verwendung von „{}“-Klammern in PHP

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen einfachen Chatroom mit PHP+MySQL+Ajax. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn