使用$ _GET和$ _POST来回应用户已发布的内容

时间:2014-02-05 13:20:53

标签: php post get undefined-index

我有一个问题让我疯狂了一段时间,因为我无法弄明白。

如果用户从表单创建帖子,我想回复“成功”之类的内容。

这是我在db-querys文件中到目前为止所得到的:

if ($_REQUEST) {
    $name           = $_REQUEST['name'];
    $price      = $_REQUEST['price'];
    $dateofevent    = $_REQUEST['dateofevent'];
    $time           = $_REQUEST['time'];
    $textinfo       = $_REQUEST['textinfo'];
    $leg            = $_REQUEST['leg'];

    $sql= $dbh->prepare("INSERT INTO events(name, dateofevent, time, price, leg, textinfo) 
    VALUE (:name, :dateofevent, :time, :price, :leg, :textinfo)");

    $sql->bindParam(':name', $name);
    $sql->bindParam(':dateofevent', $dateofevent);
    $sql->bindParam(':time', $time);
    $sql->bindParam(':price', $price);
    $sql->bindParam(':leg', $leg);
    $sql->bindParam(':textinfo', $textinfo);

    $sql->execute();

    $url = $_POST['name'];
    header('Location: events.php?'.$url);
}

然后我尝试使用$_GET来回显一下如果网址是正确的。

到目前为止,这是我的视图文件中的代码:

if(isset($_GET[$url])) {
    echo "success";
}

这里我得到未定义的变量$ url,回声不起作用,没有显示。

我也尝试过类似的事情:

$url = 'path/to/event.php';
if (!$_SERVER['REQUEST_URI'] == $_SERVER[$url]) {
    echo "success";
}

在这里,我得到未定义的索引路径/到/ event.php,回声不起作用,也没有显示。

任何人都可以帮我解决我的问题吗?我是php的新手,所以无法继续使用它,我被卡住了。

2 个答案:

答案 0 :(得分:3)

$array = array('foo' => 'bar');
$key   = 'foo';
echo $array[$key]; // outputs 'bar'

这就是你在那里尝试做的事情,这显然不起作用,因为$url不是一个已定义的变量。事实上,由于名称值在与其关联的网址中没有密钥,因此您无法从$_GET那样获得。

最简单的解决方案是在URL中添加一个键:

header('Location: events.php?name=' . urlencode($_POST['name']));
                             ^^^^^

并按键获取值:

$name = $_GET['name'];

虽然使用用户输入的名称作为主要ID 的数据库中的某些内容,但这很奇怪。您应该使用数据库中记录的自动增量数字ID。

答案 1 :(得分:0)

没关系,我已经解决了这个问题:

if ($_SERVER['REQUEST_URI'] == 'path/to/events.php') {
}
else {
    echo 'success';
}