2008-09-11 47 views
4

我有buy.php形式在其中输入项目,数量,发货数据等PHP多种实现形式验证和重定向

当你点击提交按钮,回发到buy.php($_SERVER['PHP_SELF'])和做一些数据验证。

如果有字段丢失或错误,它们会突出显示。如果一切正确,我将$_POST数据保存在$_SESSION变量中,然后执行header('Location: check.php'),在那里显示数据,以便买方在实际购买前最后一次检查信息。

现在,如果我在check.php并点击后退按钮到buy.php以便我可以更改内容,浏览器会询问我是否要重新发送POST数据。我试图避免这种情况。

任何人都有任何好的建议或PHP Multiform验证的良好做法吗?

此外,如果我有n页的用户填写,buy.php, buy2.php, ... buyn.php之前check.php会相同的想法仍然成立?

回答

4

保存到会话对象后,您可以重定向到buy.php,然后将服务器重定向到check.php,这意味着当用户单击回来时,它们将返回GET请求不是POST请求

1

是的 - 我同意上面的说明。我总是从最后一篇文章开始做一个redir,所以点击返回时没有错误或重新提交。它也避免了并发症。 u能始终以?m&m(即:page.php?m)标签的redir链接页面,这个页面上方的:(使用后elseif有)

if (isset($_GET['m'])) { 
    echo 'order placed.'; 
} 
else { 
    //... 
} 

你可以拥有一切在一个页面上太多。仅举提交按钮submit1submit2,如:如果您使用的图像的提交(记住,它成为$_POST['submit1_x'] :)

if (isset($_POST[submit1]) { 
    //validate + save session data from form1 
    //display form 2 
} else if(isset($_POST[submit2])) { 
    //validate + save session data from form2 
    //display form 3 
} else { 
    //display first form 
    //<input type="submit" name="submit1" value="Continue"> 
}