我有这个设置:
带有提交按钮的HTML表单 - >检查按钮是否在jquery中按下 - >然后通过$.post
(jquery)将输入发送到php页面。
我怎么能在PHP代码中告诉某人是否真的按下了HTML表单中的按钮?我想阻止用户在不通过表单的情况下将$ _POST值提交到php页面。
答案 0 :(得分:1)
我会做以下事情:
令牌可以保存在数据库或会话中,具体取决于你想用它们做什么。
答案 1 :(得分:0)
你基本上想要防范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
}