1 回答
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'];
}
?>
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报