我有这个设置:带有提交按钮的HTML表单->检查是否在jquery中按下了按钮->然后通过$.post
(jquery)将输入发送到php页面。
如果有人真的按下了 HTML 表单中的按钮,我如何在 php 代码中判断?我想阻止用户在不通过我的表单的情况下向 php 页面提交 $_POST 值。
我会做以下事情:
令牌可以保存在 DB 或 Session 中,具体取决于您想对它们做什么。
您基本上是要防范CSRF。正如 GGio 所说,基于会话的令牌是实现这一目标的最佳方式。
if (!isset($_SESSION['token'])) {
$token = sha1(uniqid(rand(), true) . $_SESSION['user_id']);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
}
else{
$token = $_SESSION['token'];
}
在您的表单元素中:
<input type = "hidden" name = "token" value = "<?php echo $token; ?>" >
在处理表格之前:
if(isset($_SESSION['token']) && isset($_POST['token']) && $_POST['token'] === $_SESSION['token']){
//user submitted the form correctly
}
else{
//something isn't right
}