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

时间:2012-09-01 01:46:57

标签: php redirect post

我有一个登录表单,它从用户名,密码和提交按钮发送3个帖子值。但是我的表单处理器有3个页面,一个是 validation.php ,它验证字段第二个是 read.php ,它根据db检查发布的值,第三个是登录。 php 这是登录成功的结果。成功时,所有人都分别重定向。这里的问题是,当我尝试从 read.php (重定向页面)而非 validate.php (操作页面)中的表单访问用户发布的值时,我收到错误未定义的索引。

2 个答案:

答案 0 :(得分:1)

我真的不明白你为什么要做这些重定向,但如果你想让数据更持久,你可以使用会话变量,因为$_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

如果您希望保持代码清洁,可以随时include the other files或者OOP approach

答案 1 :(得分:-1)

你应该只做一个能完成所有工作的页面。这似乎不是一个脚本太复杂,所以我建议将everthing放在一起。 您没有提供任何代码,因此我将向您展示一个通用示例。我只是输入它而不重读,所以它不是纯粹的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
}