Comment implémenter une salle de discussion légère avec PHP+mysql+ajax

墨辰丷
Libérer: 2023-03-28 18:00:01
original
2014 Les gens l'ont consulté

Cet article présente principalement la méthode d'implémentation de la salle de discussion légère PHP+mysql+ajax, et analyse les étapes spécifiques et les techniques d'implémentation associées de php+mysql pour réaliser la fonction de salle de discussion en temps réel sous forme d'exemples. j'en ai besoin, je peux y faire référence

J'ai créé un site de chat et de rencontres QQ, et je voulais ajouter une fonction de chat, j'ai donc utilisé PHP pour créer une salle de chat simple et puissante

1. Créez une table de base de données mysql :

Copier le code Le code est le suivant :

créer une table chat( id bigint AUTO_INCREMENT,username varchar(20) , chatdate datetime,msg varchar(500), clé primaire (id));

2. Écrivez la fonction de connexion à la base de données recommandée :

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;
}
?>
Copier après la connexion

3 . Écrivez les fonctions d'envoi et de réception ajax :

fonction d'envoi ajax 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();
   }
?>
Copier après la connexion

Fonction de réception ajax 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;
?>
Copier après la connexion

4. Page du salon de discussion :

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>
Copier après la connexion

Le rendu est le suivant :

Résumé : Ce qui précède est le tout le contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Comment PHP exécute les commandes système via les fonctions de désactivation du contournement

Envoyer via l'adresse e-mail de PHP

Un résumé de l'utilisation des accolades "{}" en php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!