0

問題のリダイレクト方法は、各ページにセッション値を設定します。ページにアクセスすると、以前のすべてのページ セッションが設定解除され、現在のページのセッション値が設定されます。リダイレクトでは、セッションが設定されているページをチェックしてリダイレクトを実行する関数が呼び出されます。

詳細な説明

  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 に答える 2

1

だから、理解しようとしているだけです。基本的に、あなたのページはステップ 1 と 2 を実行し、追加のコードを実行し、最後にステップ 3 を実行しますか? もしそうなら、リダイレクトを関数に抽象化することをやめたいと思います。または、そうする場合は、少なくともセッションの使用を削除してください。それは面倒で不必要です。また、可読性が低下し、柔軟性が低下します。ページで条件付きリダイレクトを処理するのは簡単ではありません。

コードにリダイレクトを直接挿入するか、現在のページ アクションを取得する 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);
于 2013-09-14T07:41:49.983 に答える
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();
}
于 2013-09-14T07:40:24.817 に答える