0

ユーザーがインデックス (ホーム) ページにアクセスしようとしたときに、ユーザーをプロファイル ページにリダイレクトする関数を作成しようとしています。POSTデータを使用してログインフォームからこれを正常に実行できましたが、この方法でセッションデータを取得するのに問題があります. Firefox は、サーバーが決して完了しない方法でリダイレクトしていると言っています。

私の一般的な機能に書かれているように、これは私が試したことです:

function logged_in_redirect() {
if (logged_in() === true) {
    header('Location: '.$_SESSION['username'].'');
  //header('Location: '.$user_data['username'].'');   *NEITHER LINE WORKS
    exit();
}
}

そして、リダイレクトを追加する私のインデックスページ:

    <?php 
    include 'core/init.php';
    logged_in_redirect();
    include 'includes/overall/header.php'; 
    ?>        
    <h1>Home</h1>
    <p>Just a template.</p>

    <?php include 'includes/overall/footer.php'; ?>

ここに私のinitが含まれています:

    <?php
    ob_start();
    session_start();
    //error_reporting(0);

    require 'database/connect.php';
    require 'functions/general.php';
    require 'functions/users.php';

    if (logged_in() === true) {
        $session_user_id = $_SESSION['user_id'];
        $user_data = user_data($db, $session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'stack_code');
        if (user_active($db, $user_data['username']) === false) {
          session_destroy();
          header('Location: index.php');
          exit();
        }
    }

    $errors = array();
    ?>

iv .htaccess を変更し、プロファイル URL に関する他のすべてが正常に機能しています。このリダイレクトだけで、今日は壁にぶつかっています。ありがとう!

4

2 に答える 2

0

簡単にわかりました。リダイレクト関数を介して init に $user_data 変数を渡す必要がありました。また、関数を呼び出すときにも:

function logged_in_redirect($user_data) {
if (logged_in() === true) {
    header('Location: '.$user_data['username'].''); 
    exit();
}

}

于 2013-08-20T21:00:21.863 に答える