繁体   English   中英

Javascript 双弹出模式与 PHP

[英]Javascript double popup modal with PHP

再会,

我正在尝试使用 javascript 在我的热点登录页面上弹出两个模式页面:例如

  1. 如果客户端设备 IP + MAC 地址存在并且客户端单击连接按钮登录模式页面应该出现。
  2. 如果客户端设备 IP + MAC 地址不存在并且客户端单击连接按钮错误模式页面应该出现(请从热点连接)

我试过这个:

<?php
$mac=$_POST['mac'];
$ip=$_POST['ip'];
 ?>


  <button onclick="connect()" type="button" class="btn btn-info">CONNECT</button>
  <script type="text/javascript">

       function connect()

    {

  $('#login').modal();
 }     

    </script>

上面的代码显示了单击 CONNECT 按钮时的登录模式,但我希望当客户端单击 CONNECT 按钮时不存在 ip 和 mac 地址,应弹出错误模式而不是登录模式。

提前感谢。

您必须回显从 PHP 到 Javascript 的值。 但请注意,您需要先验证这些值。

像这样的东西应该工作:

<?php
// get values from $_POST or default to empty string
$mac = $_POST['mac'] ?? '';
$ip  = $_POST['ip'] ?? '';
?>

<button onclick="connect()" type="button" class="btn btn-info">CONNECT</button>

<script type="text/javascript">

function connect() {
    // pass values as string to javascript variables
    var mac = "<?php echo $mac; ?>";
    var ip = "<?php echo $ip; ?>";

    // mac and ip adresses provided
    if (mac && ip) {
        $("#login").modal();
    }

    // mac or ip adresses missing
    else {
        $("#error").modal();
    }
}

</script>

需要注意的几点:

  • 这是不安全的,因为我作为 POST 传递的值可以被篡改。 根据经验,不要相信客户提供的任何东西。

  • <?php echo... ?>将“打印”文档中的值。 如果您在浏览器中检查代码,您会看到如下内容:

     var mac = "mac-address-passed-as-POST"; var ip = "123.456.78.90";
  • 您可以使用速记语法来简化echo语句:

     var mac = "<?= $mac?>"; var ip = "<?= $ip?>";
  • 为了更好地验证您在$_POST变量中获得的值,您可以在 PHP 部分中添加正则表达式检查。 就像是:

     <?php // default values $mac = ''; $ip = ''; // validate mac address if (isset($_POST['mac']) && preg_match('/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/', $_POST['mac'])) { $mac = $_POST['mac']; } // validate ip address if (isset($_POST['ip']) && preg_match('/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/', $_POST['ip'])) { $ip = $_POST['ip']; }?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM