2016-07-26 8 views
0

固定ページに$_SESSION['url'] = "http://example.com" . $_SERVER['REQUEST_URI'];を設定しています。私の目標は、ログインに成功するとこのページにリダイレクトすることです。セッション変数をログインページに渡すとセッション変数が返されない

マイログインページ:

 if($user->access_level=='Admin'){ 

     if(isset($_SESSION['url'])) { 
      $myurl = $_SESSION['url']; 
     } 
     else{ 
      $myurl = $home_url . "admin/index.php?action=login_success"; 
     } 

    header("Location: {$myurl}"); 
    } 
    else{ 
     header("Location: {$home_url}index.php?action=login_success"); 
    } 

$_SESSION['url']は、ログインページには存在しません - var_dump($_SESSION);

で検証私はしかし、ログインページとディレクトリで、次の.htaccessファイルを使用しています静的ページはログインディレクトリの2レベル上にあります。

.htaccessファイル:あなたは( にsession_startを持っていないよう

#Fix Rewrite 
Options -Multiviews 

# Mod Rewrite 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase /www/projects/php-login-system/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# used for php pages such as "yoursite.com/login.php" will become "yoursite.com/login/" 
RewriteRule ^([a-z_]+)\/?$ $1.php [NC] 
+0

ページ上部に「session_start()」がありますか? –

+0

セッションでこれを行わないでください。ユーザーが異なるタブでサイトの複数の異なるページを開くと、それらのページのほとんどではそれ以上は機能しなくなる可能性があります。情報を隠しフォームフィールドに入れます。つまり、ユーザーが送信するフォームに関係なく、リダイレクト先の_correct_アドレスがあります。または、フォームを現在のページのURLに直接送信するだけで簡単です。各ページの上部にログインデータがPOST経由で送信されたかどうかをチェックするスクリプトを含めると、処理が簡単で、そうであれば必要なチェックをすぐに実行できます。 – CBroe

+0

session_start()はセッションの前に別のインクルードファイルにあります。 - 私はあなたの推薦に同意していませんが、私もそれを見ていますが、セッション変数が別のページに渡されない理由を解決する必要がありますか? – BarclayVision

答えて

-1

音)。

+0

session_start()は上部に別のインクルードにあります。 – BarclayVision

+0

は静的ページとログインページの両方に含まれていますか? – Amien

+0

はい静的ページとログインページに同じインクルードファイルが必要なので、問題があるのか​​回避策があるのか​​分かりません。何かチャンスが.httaccessが問題を引き起こしている? – BarclayVision

0

[OK]をクリックして、ページの上部に

はので、私は様々なの上部にあるのsession_start()を持っていたが、私のページにファイルが含まれています。これはセッションデータがロードされた後、リダイレクトされる前にセッションデータをリセットしていました。この問題を解決するには、すべてのページの上部を次のように変更します。

if(!isset($_SESSION)){ 
    session_start(); 
} 

$_SESSION['url'] = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
関連する問題