1

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

我正在尝试在同一页面上编写评论提交,并考虑到用户可能不会在该字段中输入任何内容的事实。如果发生这种情况,我希望页面(例如q.php?id=1)再次加载并显示错误消息。

我可以使用一个空变量来执行错误消息,然后由表单激活的 php 文件给出一个值。但是,我在导航回特定帖子时遇到问题。我尝试使用include('q.php?id=$id)where $id is set to a number,但我知道这不是它的目的,它不接受变量

我应该改用什么?

编辑

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...
}
4

2 回答 2

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

于 2012-12-23T00:28:59.200 回答
1

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

您也许可以根据需要设置$_GET数组 - 在这种情况下,$_GET = Array("id"=>$id);然后include("q.php"). 但是,这通常被认为是 haxy,如果使用include_once不当,可能会导致问题。

于 2012-12-23T00:30:14.303 回答