使用Ajax每X秒运行一个php脚本
Using Ajax to run a php script every X seconds
我的项目:
我正在尝试创建一个专属门户来共享互联网连接,但客户端必须首先同意用户协议。之后,如果他停留在门户页面,他就可以连接互联网。
问题:
我的问题是检查客户是否仍在我的页面上向他提供连接。
为此,我尝试每10秒在我的iptables中添加他的MAC地址作为异常,因为我每15秒刷新一次所有MAC异常(除非@MAC超过两次,我让一次)。
我的文件夹包含:
index.php(显示所有内容的主页)和mac.php(我在其中添加了@mac的异常)
我的mac.php:
<?php
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
$arp=`arp -a $ipAddress`;
$lines=explode(" ", $arp);
$macAddr=$lines[3];
echo exec("sudo /sbin/iptables -t nat -I PREROUTING -m mac --mac-source $macAddr -j ACCEPT");
echo exec("sudo /sbin/iptables -I FORWARD -m mac --mac-source $macAddr -j ACCEPT");
?>
我已经在我的index.php中尝试过了:
<script>
setInterval(
(function () {
$("#mac").load("mac.php");
}), 10000);
</script>
<div id="mac"></div>
这个:
<script>
setInterval(
(function () {
$("#mac").load("mac.php #mac");
}), 10000);
</script>
<div id="mac">
<?php
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
$arp=`arp -a $ipAddress`;
$lines=explode(" ", $arp);
$macAddr=$lines[3];
echo exec("sudo /sbin/iptables -t nat -I PREROUTING -m mac --mac-source $macAddr -j ACCEPT");
echo exec("sudo /sbin/iptables -I FORWARD -m mac --mac-source $macAddr -j ACCEPT");
?>
</div>
我已经尝试过其他选择,比如:
- 将mac.php的最后两行放在用参数($macAddr)调用的mac.php中,并用参数调用mac.php
从现在起,唯一有效的方法是每10秒刷新一次页面。但正如你所知,这不是最好的方式。。。
我在Linux系统上工作。
感谢您的帮助
而true将执行无穷大
mac.php:
<?php
function checkMac(){
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
$arp=`arp -a $ipAddress`;
$lines=explode(" ", $arp);
$macAddr=$lines[3];
echo exec("sudo /sbin/iptables -t nat -I PREROUTING -m mac --mac-source $macAddr -j ACCEPT");
echo exec("sudo /sbin/iptables -I FORWARD -m mac --mac-source $macAddr -j ACCEPT");
}
?>
您需要调用此页面的所有其他页面。如前
abc.php
<?php
require_once('mac.php');
while(true){
checkMac();
sleep(10); // this should halt for 10 seconds for every loop
}
?>
希望这对你有用。
我用解决了这个问题
<script language="JavaScript">
function mac() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
xmlhttp.responseText;
};
xmlhttp.open("GET", "mac.php", true);
xmlhttp.send();
}
mac();
setInterval(mac, 10000);
</script>
相关文章:
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 如何将JavaScript变量的数据传递到另一个php页面
- 将javascript变量传递到下一个php页面
- 将php页面URL中的变量传递给JavaScript和另一个php
- 如何使用javascript/jquery将变量从一个PHP文件传递到另一个PHP文件
- 将一个php变量从js传递到php,并返回内容问题
- 通过AJAX将从AJAX获取的值发送到另一个PHP文件
- 使用 Ajax 将 Javascript 变量提交到另一个 PHP 文件
- 从 PHP 表中选择值并将其传递给另一个 PHP 页面
- 我需要将一个 php 变量传递给 DataTables.Editable sUpdateURL
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 我想在 javascript 中调用一个 php 函数,并在其中传递两个数组作为参数
- 将值从一个 Php 文件传递到另一个 Php 文件
- php中的mysql查询不起作用,但它在另一个php文件中起作用
- 我们可以用grunt设置一个php/mysql环境吗
- 如何在另一个php文件中从ajax获取变量
- 调用另一个php脚本生成图表时出现问题
- 在循环中,将一个php-var传递给javascript,其中包含该变量的值
- 如果jquery脚本's在另一个php页面的php-include语句中使用
- 如何使用wp_localize_script从另一个php文件传递参数