我有一个问题让我疯狂了一段时间,因为我无法弄明白。
如果用户从表单创建帖子,我想回复“成功”之类的内容。
这是我在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的新手,所以无法继续使用它,我被卡住了。
答案 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';
}