更改文档时重新加载 Php

这是我的 PHP 代码,我正在尝试创建聊天


<!DOCTYPE html>

<html>

<body>

<html>

<?php

session_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 方面很糟糕


慕码人8056858
浏览 127回答 2
2回答

有只小跳蛙

PHP 是执行此操作的一种奇怪方式。老实说,我在 PHP 中看到“实时”聊天的唯一方法是不断刷新,即使这样,用户也无法输入。像这样的事情在 PHP 中很难做到,因为 PHP 实际上只是生成一个页面供您查看,然后就完成了。使用 javascript 执行此操作对您来说会容易得多。您可以让 JS 每 x 秒检查一次文本文件,如果它检测到更改,则刷新页面,或者更好的是,更新聊天的 HTML。这不会太难:每 15 秒读取一个文本文件的内容您只需要找到一种方法(可能是在 javascript 中)在按下按钮时将内容写入文件。这样,其他客户端就可以收到您的消息,并且您无需在每次发送消息时都刷新页面。当然,这只适用于本地机器上的文本文件。

呼啦一阵风

您应该为消息使用数据库,因为每条消息都必须有插入日期。第一次尝试 sqlite php.net/manual/en/sqlite3.installation.php 在其他(坏)方式中,您可以在新文件中添加每条消息,每个文件都有日期时间创建标记。要仅更新聊天,更好的方法(并且只有一种使用 php 的方法)是使用 javascript。jQuery 库的开始是最好的,聊天是开始使用它们的好习惯。 您不能仅使用 php 获取更新,因为 php 会完全显示所有页面并且无法仅更新 html 页面的一部分,但 javascript 可以。没有js的只用php写的正常站点是没有的。
打开App,查看更多内容
随时随地看视频慕课网APP