我有一个多步骤的形式,并用java和php验证过,但我希望在提交并重定向到我想要的页面之后,我的客户端是唯一的一个看到被篡改的页面,而不是像他可以复制链接并将其提供给某人,而不是其他人可以在该页面上找到我不想要的页面。我怎样才能决定哪个客户端可以看到一个页面,哪一个不是
所以更具体地说,我希望它能够在我的客户提交他的表单以获得某种ID或某种可以从我的重定向页面看到或检查到的内容,而不是被重新定义的页面以便对他进行操作仅限特定时间。
我有一个多步骤的形式,并用java和php验证过,但我希望在提交并重定向到我想要的页面之后,我的客户端是唯一的一个看到被篡改的页面,而不是像他可以复制链接并将其提供给某人,而不是其他人可以在该页面上找到我不想要的页面。我怎样才能决定哪个客户端可以看到一个页面,哪一个不是
所以更具体地说,我希望它能够在我的客户提交他的表单以获得某种ID或某种可以从我的重定向页面看到或检查到的内容,而不是被重新定义的页面以便对他进行操作仅限特定时间。
有几种方法,你可以做到这一点,但它也取决于环境。您可以使用一个参数在表单提交上创建一个会话,该参数在重定向到页面时将被检查,然后检查重定向后参数是否存在,如@michaelb建议的那样。
form.php的
session_start();
$_SESSION['form_finished'] = true;
header('location: /../mycode.php');
然后在destination.php ...
session_start();
if(!$_SESSION['form_finished']) {
header("HTTP/1.0 404 Not Found");
exit;
}
编辑:
重定向一旦提交表单,您将需要做这样的事情。
if (isset($_POST['submit'])) {
//form processing code//
if ($no_errors) {
session_start();
$_SESSION['form_finished'] = true;
header('location: /../mycode.php');
}
}
如果您的用户登录,并且你正在寻找一个更永久的和安全的解决方案,你可以将字段添加到您的destination.php代替$ _SESSION()可变检查数据库。
通过[header'location:destination.php']这个看起来非常合乎逻辑的问题,你的意思是redictet页面?谢谢 – 2014-10-01 01:59:34
我得到和语法错误的第一个代码[头'位置:destination.php';]? – 2014-10-01 02:10:30
是的,destination.php将是你想要重定向到的页面。 – EternalHour 2014-10-01 02:13:38
没有关于框架中使用更多的信息,等等,请尝试使用sessions
在最终形式处理页面,这样做:
$_SESSION['form_finished'] = true;
要“记”这个人有完成了表格。在最后的“提交”页面,确保该人已完成形式是这样的:
if (!isset($_SESSION['form_finished'])) {
// Redirect to error page, display error message, etc
}
除了这个谢谢,我还会对此表示感谢 – 2014-10-01 01:37:39
我假设你已经有一个用户注册系统或某种方式来识别客户端。只要确保在呈现页面之前检查访问具有给定ID的页面的用户是否已登录,并确保用户是正确的用户,否则请抛出“Access forbidden”或类似的内容。 – 2014-10-01 01:01:09
提交我的表单之前,用户没有在我们的用户帐户数据库中注册,所以它可能工作可能与IP或什么,我只需要那些2页。 1提交页面2 destionation页面。 – 2014-10-01 01:06:54