我有一个带有单个变量' listing_type'的$ _POST数组。表单提交到包含下面代码的页面,该页面将它们重定向到另一个页面,其中更多表单取决于其初始选择。有没有更明智的方法来做到这一点?它工作正常,但感觉笨重...
<?php // listing-type.php
if ((isset($_POST['listing_type'])) && (!empty($_POST['listing_type']))) {
switch($_POST['listing_type']) {
case "1":
$url = "events/new-event.php";
break;
case "2":
$url = "restaurants/new-restaurant.php";
break;
case "3":
$url = "bars/new-bar.php";
break;
case "4":
$url = "attractions/new-attraction.php";
break;
}
header("Location: $url"); // Perform redirect to given new listing page
}
else { // Redirect to homepage if no usuable listing_type data from form
$url = "index.php";
header("Location: $url");
}
答案 0 :(得分:2)
这是使用数组的替代方法:
$urls = array("index.php",
"events/new-event.php",
"restaurants/new-restaurant.php",
"bars/new-bar.php",
"attractions/new-attraction.php",);
$url = $urls[!empty($_POST['listing_type']) ? $_POST['listing_type'] : 0];
header("Location: $url"); // Perform redirect to given new listing page
exit;
以上的许多组合。请注意,您的代码中的变量不需要empty
和isset
。 empty
检查两者。
答案 1 :(得分:1)
没关系,除了不需要两个位置调用,你不需要其他地方:
$url = "index.php";
if ((isset($_POST['listing_type'])) && (!empty($_POST['listing_type']))) {
// Switch statement
}
header("Location: $url");
答案 2 :(得分:1)
是的,你可以做到。我认为这是一个很好的方法,你可以改善你的代码,但这是一个好方法。
无论如何,我想如果你能在发送表格时用js做这个,或许在你的HTML代码中,你不必进行重定向而不用花时间,改善你网站的速度。