使用post重定向并获取重定向的成功

Redirect using post and get the succes of the redirect

本文关键字:重定向 成功 获取 post 使用      更新时间:2023-09-26

比方说,我的网站上有一个简单的表单,有三个字段:名称、密码和电子邮件。

  1. 我必须从用户那里获得这些信息,并保存在我的数据库中
  2. 然后重定向到另一个网站,并使用post发送所有这些信息
  3. 我还必须知道用户是否成功重定向到该网站(HTTP STATUS 200)

我是这样做的:

对于第1点,我只是简单地提交表格。

在数据成功保存到数据库中后,我将呈现以下带有隐藏字段的表单。这将被提交,用户将被重定向到另一个网站

    <form id="form_id" action="https://www.anotherwebsite.com/form" method="POST">
    <input type ="hidden" name ="name" value ="$name">
    <input type ="hidden" name ="password" value ="$password">
    <input type ="hidden" name ="email" value ="$email">
    </form>
    <script> document.getElementById('form_id').submit();  </script>

问题

  1. 我认为我实现第1点和第2点的策略不正确。我需要一个更好的解决方案。提交表单,然后呈现带有隐藏字段的页面,然后再次提交以重定向到另一个网站,感觉不太对劲。

  2. 我不知道要达到第三点。

根据您的问题,您可以尝试以下方法:

  1. 在文件(HTML)中创建一个包含名称、密码和电子邮件字段的表单
  2. 将表单提交到服务器
  3. 在服务器端获取数据(包括变量中的表单属性)并将其保存到数据库中
  4. 然后重定向到给定的网站(使用步骤3中存储的变量)

您可以使用任何服务器端脚本语言轻松地知道状态(202或任何错误)。

如果您要将用户发送到另一个网站,那么要知道用户已成功重定向,唯一的方法就是该网站以某种方式通知您。一旦用户离开你的页面(重定向就是这样——它告诉浏览器"离开这个URI,改为转到这个URI"),该页面上的脚本就会停止运行,因此他们无法收集任何进一步的信息。

如果您只需要知道信息已成功提交,您的脚本可以在后台POST数据,等待200响应,然后在信息提交后重定向。但这可能不符合您的要求,因为您仍然不知道重定向是否成功。

允许您知道其他网站上的页面是否正确加载的另一种可能性是在新的浏览器窗口/选项卡中打开它,而不是重定向。这是在加载另一个页面时保持页面活动(从而使脚本能够运行)的唯一方法。然而,它引入了其他问题,比如如何处理原始页面。(让它在后台打开(可能会让用户感到困惑),或者在看到新的URI已经加载后关闭它自己(当一个窗口/选项卡打开,然后原始窗口/选项卡关闭时,可能会导致不希望的视觉假象;破坏浏览器历史记录)?)

如果可能的话,让最终目的地网站在交易完成时通知你几乎可以肯定是最好的方法。

要实现第3点,如果您实际上正在尝试实现登录cummembersarea系统,则需要使用cookie。否则,您只需要在条件语句中进行重定向。

my $cgi = CGI->new; 
if (condition) { print $cgi->redirect('https://www.examplesite.com/file.html') }

关于第1-2点的一般方法,您可以在这里查看教程:http://practicalperl5.blogspot.com/