将CSRF添加到formtoemailpro.php

将CSRF添加到formtoemailpro.php,php,forms,csrf,Php,Forms,Csrf,以下网址为: 我正在尝试将代码添加到formtoemailpro.php中,但失败 我将密钥生成器添加到表单页面: //Generate a key, print a form: $key = sha1(microtime()); $_SESSION['csrf'] = $key; 和隐藏字段: <input type="hidden" name="csrf" value="<?php echo $key; ?>" /> 对不起,我的无知,有人能帮我吗 谢谢。如果我低

以下网址为:

我正在尝试将代码添加到formtoemailpro.php中,但失败

我将密钥生成器添加到表单页面:

//Generate a key, print a form:
$key = sha1(microtime());
$_SESSION['csrf'] = $key;
和隐藏字段:

<input type="hidden" name="csrf" value="<?php echo $key; ?>" />
对不起,我的无知,有人能帮我吗


谢谢。

如果我低估了您的问题,这就是您需要做的:

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    //Here we parse the form
}

if(!isset($_SESSION['csrf']) || $_SESSION['csrf'] !== $_POST['csrf']){
    throw new RuntimeException('CSRF attack');
 //Do the rest of the processing here
}
确保将“{”、“}”放在代码块上


另外,确保
$\u会话['csrf']=$key。(回声、打印等)。查看有关会话的问答。

显示
$\u POST['csrf']
的值和
$\u SESSION['csrf']
之前的
if
的值,您知道问题出在哪里谢谢。我的问题是将代码添加到表单处理器。我真的不能在这里发布脚本,因为这是一个付费的东西,我不想免费提供它,但是,它与:对不起-我想这不是很多help@user2135841尝试将“错误报告(E_ALL^E_NOTICE);”更改为错误报告(false);正如您将在链接中看到的,您应该添加session_start();并且所有$\u session[]调用必须在任何文件输出之前进行。(顺便说一句,请不要忘记向上投票,如果一切顺利,请选择被选中的答案:)谢谢。恐怕我在技术上还不能胜任。很高兴能帮助@user2135841,欢迎来到Stack Overflow。如果此答案解决了您的问题,请将其标记为已接受并投票。谢谢,祝你好运!
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    //Here we parse the form
}

if(!isset($_SESSION['csrf']) || $_SESSION['csrf'] !== $_POST['csrf']){
    throw new RuntimeException('CSRF attack');
 //Do the rest of the processing here
}