[英]Javascript double popup modal with PHP
再会,
我正在尝试使用 javascript 在我的热点登录页面上弹出两个模式页面:例如
我试过这个:
<?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.