[更改文档时重新加载Php

问题描述 投票:1回答:2

这是我的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.我不知道如何检测变化,也没有找到任何办法有人对此有解决方案吗?(其他方法也可以)附言我在php上很恐怖

php chat real-time
2个回答
0
投票

PHP是执行此操作的怪异方法。老实说,我能看到PHP中“实时”聊天的唯一方法是不断刷新,即使那样,用户也将无法键入。这样的事情在PHP中很难实现,因为PHP实际上只是生成了一个页面供您查看并完成。使用javascript可以轻松得多。您可以使JS每隔x秒钟检查一次文本文件,如果它检测到更改,则使页面刷新,甚至更好,更新聊天记录的HTML。不会太难:

Read the contents of a text file every 15 seconds

[您只需要找到一种方法,可能是在javascript中,当您按下按钮时就可以向文件中写入内容。这样,另一个客户端就可以获取您的消息,并且您不需要每次发送消息时都刷新页面。当然,这仅适用于本地计算机上的文本文件。


0
投票

您应该对消息使用数据库,因为每条消息必须具有插入日期。第一次尝试sqlite php.net/manual/en/sqlite3.installation.php用其他(不好的)方式可以将每个消息添加到新文件中,每个文件都有datetime创建标记。要仅使用更好的方式(和php的一种方式)仅更新聊天,请使用javascript。并且jQuery库是最好的开始,聊天是一起使用它们的好习惯。https://www.w3schools.com/jquery/jquery_get_started.asp您不能仅使用php获得更新,因为php完全显示了所有页面,并且无法仅更新html页面的一部分,而javascript可以。没有没有js的仅在php上编写的普通网站。

© www.soinside.com 2019 - 2024. All rights reserved.