在服务器端验证后重定向整个表单



所以我有一个同时包含客户端和服务器端验证的表单,但服务器端更重要,因为我们有 csrf 保护之类的东西。表格必须首先到达我们的服务器,然后前往第二台服务器。

我需要能够将表单提交到我的服务器,运行我的验证,然后如果通过,则将整个表单发送到另一个页面。 -- 我的意思是表单的 action 属性,所有字段,所有内容。它的行为应该像表单的原始操作是重定向的域一样。

这是否可能使用 curl,或者我可以从原始值动态创建一个新表单,并使用 POST 标头将其发送到另一个域?

应该提到:我无法访问其他服务器,它是第三方。

您可以在同一页面中进行验证,然后将其插入数据库,并将当前页面重定向到另一个页面并检索数据,例如:

if(isset($_POST)){
    // here you assign variables to the post values like:
    $name = $_POST['name'];
    //then you run your validation from the database
    // assuming $con to be your db connection variable
    $query = mysqli_query($con, "SELECT * FROM table WHERE (blah blah blah)");
    if(mysqli_num_row ==1){
        if(mysqli_query($con, " INSERT INTO table VALUES(blah blah blah)")){
            //then you use the header to redirect the page to the next page
            header(location: 'path/to/page');
        }
    }
}

您可以使用其他页面上的 cookie 或会话传递变量并使用它们。假设您的表单名称是 FIRST_FORM_VALIDATE,这是在某个页面上FIRST_FORM_PAGE.

现在,在FIRST_FORM_PAGE上获取用户输入,并使用POST方法将此数据发送到FIRST_FORM_VALIDATE。在这里,您可以在服务器上验证数据是否正确,将所有输入存储在会话变量中,如下所示-

session_start();
$_SESSION['form_input1']=$_POST['form_input1'];

依此类推,存储所有变量。现在,您可以在要验证这些变量的任何位置在另一个页面上使用这些变量。完成验证后,销毁会话变量。

编辑 - 如果您要将数据发送到另一台服务器并希望阻止CSRF,那么最好的方法是将这些全部存储在临时数据库中,然后使用远程数据库连接在另一台服务器上访问它。

相关内容

  • 没有找到相关文章

最新更新