如何在重定向页面上分配post-globals


how to assign post globals on a redirected page?

我有一个登录表单,它从用户名、密码和提交按钮发送3个post值。但我的表单处理程序有三个页面,一个是验证字段的validation.php,第二个是根据db检查发布的值的read.phpogin.php。一旦成功,所有人都会各自转向对方。这里的问题是,当我试图从read.php(重定向页面)而不是validate.php

我真的不明白你为什么要进行所有这些重定向,但如果你想让数据更持久,你可以使用会话变量,因为$_POST超级全局只为当前请求设置。

firstfile.php

<?php
session_start();
$_SESSION['posted_data'] = $_POST;

其他文件

<?php
session_start();
var_dump($_SESSION['posted_data']);

然而,正如已经说过的,你可能真的想重新考虑做所有的请求。

更新

除了你会丢失数据之外,你还需要多次(不必要的)请求来简单地汇总表单。唯一应该发生的重定向是在你完成所有工作后重定向到成功页面。有关详细信息,请参阅:http://en.wikipedia.org/wiki/Post/Redirect/Get

如果你想保持代码的整洁,你可以总是包括其他文件,或者采用OOP方法。

您应该只做一个页面来完成所有工作。这似乎不是一个太复杂的剧本,所以我建议把所有的东西放在一页上。您没有提供任何代码,所以我将向您展示一个一般示例。我只是在没有重读的情况下输入了它,所以它不是纯粹的PHP语法,只是精神:

<?php
$login=$_POST['login'];
$pwd=$_POST['pwd'];
$dbcheck = mysql_fetch_array(mysql_query("SELECT COUNT(1) FROM table WHERE user =$login and pwd = $pwd"))
if($dbcheck[0] > 0) {
  //Login success
  //Setup your session variables, cookies, etc
  //Then you can do your redirect here
} else {
  //Page for wrong login
}