推荐的管理页面重定向的方法

时间:2013-09-14 06:51:18

标签: php session redirect

有问题的重定向方法在每个页面上设置会话值。在访问页面时,将取消设置所有先前页面会话,并设置当前页面的会话值。在重定向时,将调用一个函数,该函数检查会话设置的页面并执行重定向。

详细说明

  1. 首次访问网页时,通过调用clear_sessions();取消设置任何网页“访问”会话

    clear_sessions(){
        //example
        unset($_SESSION['search_product_page']);
        unset($_SESSION['search_inventory_page']);
    };
    
  2. 在当前页面上设置会话

    $_SESSION['search_inventory_page'] = 1;
    
  3. 呼叫重定向

    function redirection(){
        if(isset($_SESSION['search_product_page'])){
            header("Location:search_product.php");
            exit();
        }
        elseif (isset($_SESSION['search_inventory_page'])){
            header("Location:search_inventory.php");
            exit();
        }
    }
    
  4. 这似乎是一种非常笨重的方式。关于我应该如何处理重定向的任何建议?

    感谢。

2 个答案:

答案 0 :(得分:1)

所以,只是想了解。基本上,您的页面执行步骤1和2,运行其他代码,然后在结束时执行步骤3?如果是这样的话,我可能会废除将重定向抽象为函数。或者,如果你这样做,至少删除Sessions的使用。它太乱了,没必要。它还降低了可读性并降低了灵活性。您无法轻松处理页面上的条件重定向。

我会直接在代码中插入header("Location: ...");重定向,或者为参与当前页面操作的redirection()的函数声明添加一个参数。

例如,在设置文件中,定义页面操作:

define("SEARCH_INVENTORY_PAGE__SUBMITTED", 1);
define("SEARCH_PRODUCT_PAGE__SUBMITTED", 2);

并在您的重定向功能中,您接受页面操作:

function redirection($action){
    switch($action) {
        case SEARCH_INVENTORY_PAGE__SUBMITTED:
            header("Location: closedTicket.php");
            break;
        case SEARCH_PRODUCT_PAGE__SUBMITTED:
            header("Location: editTicket.php");
            break;
        default:
            throw new Exception('Page action $action not defined.');
    }
    exit();
}

并通过操作从代码中调用函数,例如

redirection(SEARCH_INVENTORY_PAGE__SUBMITTED);

答案 1 :(得分:0)

function redirect($url) {
    ob_start();
    header("Location:".$url);
    ob_flush();
    die();
}

尝试此代码,您可以通过调用此函数重定向。这段代码也是

if(isset($_SESSION['search_product_page'])){
    redirect("editTicket.php");
    exit();
}
elseif (isset($_SESSION['search_inventory_page'])){
    redirect("Location:closedTicket.php");
    exit();
}