为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 双弹出模式与 PHP

Javascript 双弹出模式与 PHP

PHP
大话西游666 2023-07-08 16:33:19
再会,我正在尝试使用 javascript 在我的热点登录页面上弹出两个模式页面:例如如果客户端设备 IP + MAC 地址存在,并且客户端单击 CONNECT 按钮,则应出现登录模式页面。如果客户端设备 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 地址时,应该弹出错误模式而不是登录模式。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您必须将 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'];

}


?>


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信