PHP多重定向

时间:2015-03-11 20:57:52

标签: php redirect

我有一个带有单个变量' 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");
}

3 个答案:

答案 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;

以上的许多组合。请注意,您的代码中的变量不需要emptyissetempty检查两者。

答案 1 :(得分:1)

没关系,除了不需要两个位置调用,你不需要其他地方:

$url = "index.php";
if ((isset($_POST['listing_type'])) && (!empty($_POST['listing_type']))) {
    // Switch statement
}

header("Location: $url");

答案 2 :(得分:1)

是的,你可以做到。我认为这是一个很好的方法,你可以改善你的代码,但这是一个好方法。

无论如何,我想如果你能在发送表格时用js做这个,或许在你的HTML代码中,你不必进行重定向而不用花时间,改善你网站的速度。