使用Ajax每隔X秒运行一个php脚本

时间:2015-11-19 16:51:10

标签: javascript php ajax

我的项目:

我正在尝试使用强制网络门户来共享Internet连接,但客户端必须首先同意用户协议。之后,如果他留在门户页面,他可以连接互联网

问题:

我的问题是检查客户端是否仍在我的页面上以向他提供连接。

为此,我尝试每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的最后几行放在mac.php中,用参数($ macAddr)调用并用参数调用mac.php

从现在开始工作的唯一方法是每10秒刷新一次页面。但是你可能知道,这不是最好的方式......

我正在使用Linux系统。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

而true将执行无限 mac.php:

newAspect.entityState.isDetached()

您需要调用此页面的所有其他页面。比如前。

abc.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");


          }
     ?>

希望这对你有用。

答案 1 :(得分:0)

我解决了它:

<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>