0

我有一个问题让我发疯了一段时间,因为我就是想不通。

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

这是我到目前为止在我的 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然后,如果 url 正确,我尝试使用来回显某些内容。

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

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

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

我也尝试过类似的东西:

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

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

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

4

2 回答 2

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

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

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

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

并按键获取值:

$name = $_GET['name'];

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

于 2014-02-05T13:25:34.057 回答
0

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

if ($_SERVER['REQUEST_URI'] == 'path/to/events.php') {
}
else {
    echo 'success';
}
于 2014-02-05T13:27:33.340 回答