基本上,当用户登录时,我需要一个单独的网页自动更新每个登录,例如:
12:30 User1已登录。
12:35 User5已登录。
等。等
我希望页面始终自动更新。 我怎样才能做到这一点?
@Edit 是的,我知道Ajax,但我的意思是一般如何做。 当用户登录时,我应该逐行写入HTML每个日志,然后使用Ajax继续重新加载吗?
答案 0 :(得分:1)
当用户登录时,您使用PHP将字符串附加到文件。
现在创建一个名为 ajaxCalls.php 的PHP文件,然后你必须打开文件并回显每一行。(确保将此输出编码为json,它变得更容易使用在javascript)。 现在调用 ajaxCalls.php (使用AJAX)并从您想要显示下面字符串的页面中获取结果作为json对象。
12:30 User1 have logged in.
12:35 User5 have logged in.
<强>的login.php 强>
<?php
$username = "foo";
$password = "bar";
if(userCanLogin($username, $password))
{
saveToFile($username);
}
function saveToFile($username)
{
$fileHandle = fopen("userLogins.txt", "a");
fwrite(date("H:i") . " " . $username . " has logged in.", $fileHandle);
fclose($fileHandle);
}
?>
index.php 您想要自动更新的页面
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
<script>
function getUserLogins()
{
$.ajax({
url: 'ajax.php',
type: 'GET',
dataType: json
success: function(result)
{
var jsonObject = JSON.parse(result);
for(var row in jsonObject)
{
$("#userLogins").append(row);
}
}
});
setTimeout(getUserLogins, 1000);
}
$(function() {
getUserLogins();
});
</script>
</head>
<body>
<div id="userLogins"></div>
</body>
</html>
ajax.php 此文件应该只能被称为异步
<?php
$lines = file("userLogins.txt");
echo json_encode($lines);
?>
上面的所有代码都是未经测试的! 如果您想要即时更新,则必须设置一个“推送”数据给您的服务,而不是“拉”。 当执行推送时,客户端就像从服务器发送的接收器。然后必须使用某种套接字,比如WebSockets来处理数据。您可以使用像http://beaconpush.com/这样的“推送”提供程序,也可以创建自己的推送服务器(建议使用NodeJS)。