Javascript 双弹出模式与 PHP

再会,

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

  1. 如果客户端设备 IP + MAC 地址存在,并且客户端单击 CONNECT 按钮,则应出现登录模式页面。

  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>

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


大话西游666
浏览 110回答 1
1回答

MM们

您必须将 PHP 中的值回显到 Javascript。但请注意,您需要首先验证这些值。像这样的东西应该有效:<?php// get values from $_POST or default to empty string$mac = $_POST['mac'] ?? '';$ip&nbsp; = $_POST['ip'] ?? '';?><button onclick="connect()" type="button" class="btn btn-info">CONNECT</button><script type="text/javascript">function connect() {&nbsp; &nbsp; // pass values as string to javascript variables&nbsp; &nbsp; var mac = "<?php echo $mac; ?>";&nbsp; &nbsp; var ip = "<?php echo $ip; ?>";&nbsp; &nbsp; // mac and ip adresses provided&nbsp; &nbsp; if (mac && ip) {&nbsp; &nbsp; &nbsp; &nbsp; $("#login").modal();&nbsp; &nbsp; }&nbsp; &nbsp; // mac or ip adresses missing&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; $("#error").modal();&nbsp; &nbsp; }}</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 addressif (isset($_POST['mac']) && preg_match('/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/', $_POST['mac'])) {&nbsp; &nbsp; $mac = $_POST['mac'];}// validate ip addressif (isset($_POST['ip']) && preg_match('/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/', $_POST['ip'])) {&nbsp; &nbsp; $ip = $_POST['ip'];}?>
打开App,查看更多内容
随时随地看视频慕课网APP