2014-10-01 145 views
0

我有一个多步骤的形式,并用java和php验证过,但我希望在提交并重定向到我想要的页面之后,我的客户端是唯一的一个看到被篡改的页面,而不是像他可以复制链接并将其提供给某人,而不是其他人可以在该页面上找到我不想要的页面。我怎样才能决定哪个客户端可以看到一个页面,哪一个不是

所以更具体地说,我希望它能够在我的客户提交他的表单以获得某种ID或某种可以从我的重定向页面看到或检查到的内容,而不是被重新定义的页面以便对他进行操作仅限特定时间。

+0

我假设你已经有一个用户注册系统或某种方式来识别客户端。只要确保在呈现页面之前检查访问具有给定ID的页面的用户是否已登录,并确保用户是正确的用户,否则请抛出“Access forbidden”或类似的内容。 – 2014-10-01 01:01:09

+0

提交我的表单之前,用户没有在我们的用户帐户数据库中注册,所以它可能工作可能与IP或什么,我只需要那些2页。 1提交页面2 destionation页面。 – 2014-10-01 01:06:54

回答

1

有几种方法,你可以做到这一点,但它也取决于环境。您可以使用一个参数在表单提交上创建一个会话,该参数在重定向到页面时将被检查,然后检查重定向后参数是否存在,如@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()可变检查数据库。

+0

通过[header'location:destination.php']这个看起来非常合乎逻辑的问题,你的意思是redictet页面?谢谢 – 2014-10-01 01:59:34

+0

我得到和语法错误的第一个代码[头'位置:destination.php';]? – 2014-10-01 02:10:30

+0

是的,destination.php将是你想要重定向到的页面。 – EternalHour 2014-10-01 02:13:38

1

没有关于框架中使用更多的信息,等等,请尝试使用sessions

在最终形式处理页面,这样做:

$_SESSION['form_finished'] = true; 

要“记”这个人有完成了表格。在最后的“提交”页面,确保该人已完成形式是这样的:

if (!isset($_SESSION['form_finished'])) { 
    // Redirect to error page, display error message, etc 
} 
+0

除了这个谢谢,我还会对此表示感谢 – 2014-10-01 01:37:39

相关问题