如果用户发布了 _GET 美元和 _POST 美元来回显某些内容,则出现问题

issue using $_GET and $_POST to echo something if a user has posted

提问人:Bondenn 提问时间:2/5/2014 最后编辑:hakreBondenn 更新时间:5/4/2014 访问量:195

问:

我遇到了一个问题,这个问题已经让我发疯了一段时间,因为我就是想不通。

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

到目前为止,这是我在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";
}

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

谁能帮我解决我的问题?我是 php 的新手,所以不能再进一步了,我被困住了。

php post 获取 undefined-index

评论


答:

3赞 deceze 2/5/2014 #1
$array = array('foo' => 'bar');
$key   = 'foo';
echo $array[$key]; // outputs 'bar'

这就是你试图在那里做的事情,这显然是行不通的,因为不是一个定义的变量。事实上,由于 name 值在与它关联的 URL 中没有,因此您根本无法以这种方式获取它。$url$_GET

对您来说,最简单的解决方案是在 URL 中添加一个键:

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

并按键获取值:

$name = $_GET['name'];

不过,使用用户输入的名称作为数据库中某些内容的主 ID 很奇怪。您应该使用数据库中记录的自动递增数字 ID。

评论

0赞 Bondenn 2/5/2014
非常感谢你,我使用了这个名字,因为我试图让它工作,出于懒惰,因为很容易接受我已经准备好写的东西。我将它切换到 id。
0赞 Bondenn 2/5/2014 #2

没关系,我已经这样解决了:

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