PHP重定向到带有URL变量的页面

时间:2012-12-23 00:27:52

标签: php get include

我有一个页面q.php,它是由其ID定义的用户提交的帖子(例如,q.php?id=1将是使用$id变量拉取的某个帖子来自数据库的所有其他信息。)

我正在尝试在同一页面上对评论提交进行编码,并说明用户可能无法在字段中输入任何内容。如果发生这种情况,我希望页面(例如q.php?id=1)再次加载并显示错误消息。

我可以使用一个空变量来执行错误消息,然后通过表单激活的php文件给出一个值。但是,我遇到了导航回特定帖子的问题。我试图使用include('q.php?id=$id),其中$ id设置为数字,但我明白这不是它的目的而且它不接受变量

我应该使用什么?

修改

answer.php(表单激活的文件):

require 'q.php';
$_GET['id'] = $id;
$_SESSION['error'] = "Please fill in all of the fields.";

q.php:

if ($_SESSION['error'] !== 0) {
    echo "<p style='color: #AA1111;'>".$_SESSION['error']."</a>";
    unset($_SESSION['error']); // this isn't happening...
}

2 个答案:

答案 0 :(得分:5)

如果您确实必须包含内联页面,则可以随时修改$_GET

$_GET['id'] = $id;
require 'q.php';

但是错误消息听起来可以通过会话变量或重定向来完成。重定向可能类似于:

header('Location: q.php?id=' . $id . '&error=The+error');
exit();

然后,您在$_GET['error']中查看q.php。使用会话变量将大致相同,除了不将error添加为查询字符串参数,您可以立即使用$_SESSION['error']unset

答案 1 :(得分:1)

您可以使用header("Location: q.php?id=$id"); exit;,但是您需要其他方式来发送错误消息(例如:将其保存在$_SESSION中)

您可以按照自己的意愿设置$_GET数组 - 在这种情况下,$_GET = Array("id"=>$id);然后include("q.php")。这通常被认为是haxy,如果你没有正确使用include_once,可能会导致问题。