Maison  >  Article  >  développement back-end  >  Comment écrire une discussion sur un site Web php

Comment écrire une discussion sur un site Web php

angryTom
angryTomoriginal
2019-10-29 10:41:382650parcourir

Comment écrire une discussion sur un site Web php

Comment rédiger un chat sur un site Web php

Nous pouvons utiliser diverses méthodes pour mettre en œuvre un chat Web salles, telles que websocket, ou utilisez un service de chat tiers. Voici le moyen le plus simple d'actualiser continuellement la page pour obtenir des informations.

Apprentissage recommandé : Tutoriel vidéo PHP

1. Création d'une base de données

create table chat (
  chattime datetime,
  nick char(10),
  words char(150)
);

login.php

<html>
<head>
  <title>用户登录</title>
  <meta charset="utf-8">
</head>
<body>请输入您的昵称<br>
<form action="main.php" method="post" target="_self">  //点击登录后跳转到main.php,并将输入的数据用post的方式发送过去
  <input type="text" name="nick" cols="20">
  <input type="submit" value="登录">
</body>
</html>

main.php

<?php
  session_start();
  $_SESSION[&#39;nick&#39;] = $_POST[&#39;nick&#39;]; //获取login.php发送过来的数据,也就是用户昵称,并将它保存在session中用于对用户进行跟踪
?>
<html>
  <frameset rows="80%, 20%">
  <frame src="cdisplay.php" name="chatdisplay"/>   // 聊天信息展示区
  <frame src="speak.php" name="speak"/>    //发言区
  </frameset>
</html>

speak.php

<html>
<head>
  <title>发言</title>
  <meta charset="utf-8">
</head>
<body>
<?php
   session_start(); //如果设置北京时间,需要加上  date_default_timezone_set(&#39;PRC&#39;);
   if ($_POST[&#39;words&#39;]) {
   $conn = mysql_connect("127.0.0.1","root","******");  //连接数据库
   mysql_select_db("yuema", $conn);
   $time = date(y).date(m).date(d).date(h).date(i).date(s);  //当前时间
   $nick = $_SESSION[&#39;nick&#39;];
   $words = $_POST[&#39;words&#39;];
   $str = "insert into chat(chattime, nick, words) values(&#39;$time&#39;, &#39;$nick&#39;, &#39;$words&#39;);"; 
   mysql_query($str, $conn);  //将用户名,时间和发言内容进行插入
   mysql_close($conn);
}
?>
 
<form action="speak.php" method="post" target="_self">
  <input type="text" name="words" cols="20">
  <input type="submit" value="发言">
</form>
</body>
</html>

cdisplay.php

<html>
<head>
  <title>显示用户发言</title>
  <meta http-equiv="refresh" content="5;url=cdisplay.php">  //设置每隔5秒钟刷新一次
</head>
<body>
<?php
  $conn = mysql_connect("127.0.0.1", "root", "******");
  mysql_select_db("yuema", $conn);
  $str = "select * from chat order by chattime;";
  $result = mysql_query($str, $conn);
  $rows = mysql_num_rows($result);
  mysql_data_seek($result, $rows-15); //取最近插入的15条数据
  if ($rows<15)
    $l = $rows;
  else  
    $l = 15;
  for ($i = 1; $i <= $l; $i++) {    //输出这15条数据
    list($chattime, $nick, $words) = mysql_fetch_row($result);
    echo $chattime;
    echo " ".$nick." ";
    echo $words;
    echo "<br>";
  }
?>
</body>
</html>

Affichage du résultat

Comment écrire une discussion sur un site Web php

2. acquisition ajax, sans rafraîchir la page

login.php

<html>
<head>
  <title>用户登录</title>
  <meta charset="utf-8">
</head>
<body>请输入您的昵称<br>
<form action="main.php" method="post" target="_self">  //点击登录后跳转到main.php,并将输入的数据用post的方式发送过去
  <input type="text" name="nick" cols="20">
  <input type="submit" value="登录">
</body>
</html>

main.php

<?php
  session_start();
  $_SESSION[&#39;nick&#39;] = $_POST[&#39;nick&#39;]; //获取login.php发送过来的数据,也就是用户昵称,并将它保存在session中用于对用户进行跟踪
?>
<html>
  <frameset rows="80%, 20%">
  <frame src="cdisplay.php" name="chatdisplay"/>   // 聊天信息展示区
  <frame src="speak.php" name="speak"/>    //发言区
  </frameset>
</html>

speak.php

<html>
<head>
  <title>发言</title>
  <meta charset="utf-8">
</head>
<body>
<?php
   session_start();   //如果设置北京时间,需要加上  date_default_timezone_set(&#39;PRC&#39;);
   if ($_POST[&#39;words&#39;]) {
   $conn = mysql_connect("127.0.0.1","root","******");  //连接数据库
   mysql_select_db("yuema", $conn);
   $time = date(y).date(m).date(d).date(h).date(i).date(s);  //当前时间
   $nick = $_SESSION[&#39;nick&#39;];
   $words = $_POST[&#39;words&#39;];
   $str = "insert into chat(chattime, nick, words) values(&#39;$time&#39;, &#39;$nick&#39;, &#39;$words&#39;);"; 
   mysql_query($str, $conn);  //将用户名,时间和发言内容进行插入
   mysql_close($conn);
}
?>
 
<form action="speak.php" method="post" target="_self">
  <input type="text" name="words" cols="20">
  <input type="submit" value="发言">
</form>
</body>
</html>

cdisplay .php

<html>
<head>
  <meta charset="utf-8">
  <title>显示用户发言</title>
  <script type="text/javascript" src="jquery.js"></script>  //jquery库,jquery.js可以在网上下载
  <script type="text/javascript">
      setInterval(&#39;show()&#39;, 3000);   // 设置自动刷新时间 3000毫秒也就是3秒钟
         function show() {
         $.ajax({
            url:&#39;server_get.php&#39;,  //请求发送到server_get.php进行处理
            type:&#39;post&#39;,
            dataType:&#39;html&#39;,
            error:function() {
              alert(&#39;请求失败,请稍后再试&#39;);
            },
            success:function(msg) {
            $(&#39;p&#39;).html(msg);  //设置body中p标签的内容
            }
       });
    }
  </script>
</head>
<body>
<p></p>
</body>
</html>

server_get.php

<?php
  $conn = mysql_connect("127.0.0.1", "root", "******");
  mysql_select_db("yuema", $conn);
  $str = "select * from chat order by chattime;";
  $result = mysql_query($str, $conn);
  $rows = mysql_num_rows($result);
  mysql_data_seek($result, $rows-15);
  if ($rows < 15) 
    $l = $rows;
  else
    $l = 15; 
  $string = ""; 
  for ($i = 1; $i <= $l; $i++) {
    list($chattime, $nick, $words) = mysql_fetch_row($result);
    $string.=$chattime;
    $string.=" ";
    $string.=$nick;
    $string.=" ";
    $string.=$words;
    $string.="<br>";
  }
  echo $string; 
?>

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!

Déclaration:
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