在PHP中,这是否足以通过单击表单提交按钮来保证表单已经提交,并验证发布的内容不是空的?
if($_SERVER['REQUEST_METHOD']=='POST' && !empty($_POST['field_data']))
{
echo "ok";
}
发布于 2014-02-27 01:12:05
我倾向于使用隐藏的表单字段。
<?php
$csrf_token = md5(time().'random string');
$_SESSION['csrf'] = $csrf_token;
?>
<input type="hidden" id="submitted" name="submitted" value="yes"/>
<input type="hidden" id="csrf" name="csrf" value="<?php echo $csrf_token; ?>"/>
然后,在我的PHP中,我会使用如下内容:
if($_SERVER['REQUEST_METHOD']=='POST' && $_POST['submitted'] == 'yes' && $_POST['csrf'] == $_SESSION['csrf']){
// Do something
echo 'Form submitted via POST';
}
更新为包含CSRF字段
发布于 2014-02-27 01:15:20
首先,您需要检查$_SERVER['REQUEST_METHOD']
输出,这样才能最好地将输出转换为
if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') {
然后,您可以使用submit按钮名进行检查,如
<input type="hidden" id="submitted" name="submitted" value="yes"/>
if(strtoupper($_SERVER['REQUEST_METHOD'])=='POST' && isset($_POST['submitted']) && $_POST['submitted'] == 'yes'){
此外,您还可以检查由isset()
或empty()
提交的所有表单值。
https://stackoverflow.com/questions/22063742
复制