这是我的 PHP 代码,我正在尝试创建聊天<!DOCTYPE html><html><body><html><?phpsession_start();$userinput = $_GET["name"];if (empty($userinput)){} else { $myfile = fopen("chat.txt", "a"); fwrite($myfile, $userinput); fwrite($myfile, "<br>");}$chatfile = fopen("chat.txt", "r");echo fread($chatfile,filesize("chat.txt"));echo $chatfile;?> </body></html><form method="get" id="myForm" action=""><input type="text" name="name"placeholder="type in your comment" autofocus><input type="submit"></form><script></script></body></html>我知道 php 不是要走的路,但我想找点乐子,而且它似乎正在解决。另外,我想问一下你们如何让聊天实时化。我创建了一个名为 chat.txt 的文档,也许我可以检测到它何时更改,然后重新加载。这种方法有两个问题。1. 每次重新加载后,您之前输入的消息都会再次输入 2.我不知道如何检测变化,也没有找到任何方法来做到这一点,有人对此有解决方案吗?(其他方法会很好) PS 我在 php 方面很糟糕
2 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
PHP 是执行此操作的一种奇怪方式。老实说,我在 PHP 中看到“实时”聊天的唯一方法是不断刷新,即使这样,用户也无法输入。像这样的事情在 PHP 中很难做到,因为 PHP 实际上只是生成一个页面供您查看,然后就完成了。使用 javascript 执行此操作对您来说会容易得多。您可以让 JS 每 x 秒检查一次文本文件,如果它检测到更改,则刷新页面,或者更好的是,更新聊天的 HTML。这不会太难:
每 15 秒读取一个文本文件的内容
您只需要找到一种方法(可能是在 javascript 中)在按下按钮时将内容写入文件。这样,其他客户端就可以收到您的消息,并且您无需在每次发送消息时都刷新页面。当然,这只适用于本地机器上的文本文件。
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您应该为消息使用数据库,因为每条消息都必须有插入日期。第一次尝试 sqlite php.net/manual/en/sqlite3.installation.php 在其他(坏)方式中,您可以在新文件中添加每条消息,每个文件都有日期时间创建标记。要仅更新聊天,更好的方法(并且只有一种使用 php 的方法)是使用 javascript。jQuery 库的开始是最好的,聊天是开始使用它们的好习惯。 您不能仅使用 php 获取更新,因为 php 会完全显示所有页面并且无法仅更新 html 页面的一部分,但 javascript 可以。没有js的只用php写的正常站点是没有的。
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消