提问人:Bondenn 提问时间:2/5/2014 最后编辑:hakreBondenn 更新时间:5/4/2014 访问量:195
如果用户发布了 _GET 美元和 _POST 美元来回显某些内容,则出现问题
issue using $_GET and $_POST to echo something if a user has posted
问:
我遇到了一个问题,这个问题已经让我发疯了一段时间,因为我就是想不通。
如果用户从表单创建帖子,我想回声“成功”之类的内容。
到目前为止,这是我在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 的新手,所以不能再进一步了,我被困住了。
答:
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';
}
评论