我有一个文本区域,你可以在其中输入你的消息,还有一个文本区域,它应该输出来自我页面上任何主机的所有消息:
<form action= "chatroom.php" method="post">
Chatbox:<textarea name="results" rows="10" cols="40">
<?php
$accum = $results . $message;
echo $accum;
?>
</textarea>
<br>
Send message:<textarea name="message" rows="7" cols="30"></textarea>
<input type="submit" value="Send" name="send">
</form>它工作得很好,但只能在任何一台计算机上运行。
我不认为这是服务器问题(使用WAMP)。该站点位于web上,其他回声也出现在其他客户端上,例如
echo "<br>Connected to MySQL.<br>";但是,当我在我的服务器计算机上发送一条消息时,它不会出现在我主机的Chatbox文本区域中,反之亦然。
我已经尝试将Chatbox文本区域移出表单,但没有解决问题。
尝试直接将$accum回显到页面上,而不是文本区域,这并没有解决问题。
<?php session_start(); ?> 在刚开始的时候,chatroom.php也不能工作。
顺便说一句,我在php代码中使用了mySQL,并且在mysqli中使用了"localhost“而不是我的外部IP。我不认为这是问题所在,因为当他们远程注册时,数据库会添加一个新用户。
我认为所有PHP都是在服务器上执行的,所以$accum不应该从所有主机获取文本吗?
我想知道问题是不是所有客户端都有自己的$message、$results和$accum变量,因为每个客户端都连接到服务器,而不是彼此连接。所以这能解释这种行为吗?(或者我不是完全正确的?)
忘了提一下,我正在通过再次单击Send来刷新页面,以检查文本是否出现;我还没有实现自动刷新。
编辑:在chatroom.php中:
<?php
$message = $_POST["message"];
$results= $_POST["results"];
?>我只是将html name参数转换为一个php变量,然后将该变量直接发送回页面的不同位置。
此外,还包括:
<?php
$username = $_POST["username"];
$word = $_POST["word"];
$conn = new mysqli("localhost", "user", "pw", "", 8080);
if($conn->connect_error)
echo $conn->connect_error;
else
echo "<br>Connected to MySQL.<br>";
if ($conn->query("create database chatdb")===TRUE)
echo "Created database";
else
echo $conn->error;
if ($conn->query("use chatdb")===TRUE)
echo "using chatdb";
else
echo "<br>Not using chatdb<br>";
if (
$conn->query("create table
users(
id INT(6) unsigned auto_increment primary key,
username varchar(30),
word varchar(30)
)")===TRUE)
{
echo "table created";
}
else
echo $conn->error;
if ($conn->query("insert into users (username, word) values ('$username',
'$word')")===TRUE)
echo "<br>inserted values<br>";
else
echo $conn->error;
?>我的注册页面:
Sign Up:
<form action="chatroom.php" method="post">
Username:<input type="text" name="username"><br>
Password:<input type="text" name="word"><br>
<input type="submit" value="Sign Up!" name="signup">
</form>再说一次,我不认为mySQL与此有关--但我可能错了。
发布于 2018-03-26 05:56:00
HTTP协议是一种请求/响应协议。当有人显示聊天页面时,我假设您的代码从数据库读取消息并显示这些消息。
有一个请求(获取/chat.php,响应是聊天页的超文本标记语言),此时web浏览器和服务器之间的连接关闭。
在此之后,web客户端将无法知道有人向数据库中发布了一条新消息,除非:
解决方案1、2和3需要一定程度的javascript能力。
https://stackoverflow.com/questions/49481097
复制相似问题