2016-05-02 22 views
1

私はPHPでかなりnoobですが、私は運動しようとしています。昨日以来、私は私も理解できない問題によ、私は自分のコードが正しいと思ったが、それは唯一のログに記録されましたが、ログに記録されたユーザーのページにアクセスできませんか?

のfunctions.phpログインしているユーザーのためのページを許可するように私の関数であるので、ここで

間違っているようです

function logged_only() 
{ 
    if(session_status() == PHP_SESSION_NONE) 
    { 
     session_start(); 
    } 
    if(!isset($_SESSION['auth'])) 
    { 
     $_SESSION['flash']['danger'] = "You can't enter this page - not logged in"; 
     header('Location: login/login.php'); 
     exit(); 
    } 
} 

だから、私がログインしていないよ場合はログインページに私をリダイレクトするようになっています、シンプル

login.php

elseif(password_verify($_POST['password'], $user->password)){ 
    $_SESSION['auth'] = $user; 
    $_SESSION['flash']['success'] = 'You're now connected'; 
    header('Location: ../profile.php'); // user's homepage 
    exit(); 

これ以上のコードがありますが、かなりうまくいきます。

この場合、スクリプトは$ _SESSIONにユーザーの情報を挿入する必要がありますが、login.phpで私をリダイレクトするだけです。また、「profile.php」には「logged_only();」のみが含まれています。 (私は$ _SESSIONを経由してメッセージを送信していたように)「あなたは、このページにアクセスすることはできません」何もなく、を示していない$ _SESSIONのとしますprint_r(私はlogin.phpへのリダイレクトを削除する場合)、

誰か私を導く?おかげ

+0

http://php.net/manual/en/function.error-reporting.php –

+0

置き 'のsession_start (); 'セッションの使用を条件とするスクリプトの先頭に、またはセッションを使用する可能性があります。 – Marcus

答えて

1

あなたは多分PHPでsession_start()についてお読みください:PHP Manual

短い言葉で:session_start()は、新しいセッションを開始したり、クライアントとの既存のセッションを回復します。

各リダイレクト後(login.phpにも)、session_start()に電話する必要があります。あなたが唯一の

session_start(); 

を使用する必要があります

if (session_status() == PHP_SESSION_NONE){ 
    session_start(); 
} 

のための必要はありません

(両方では、あなたのfunctions.phpとあなたのlogin.php)前$_SESSION変数にアクセスします。

のfunctions.php

function logged_only(){  
    session_start(); 
    if(!isset($_SESSION['auth'])){ 
     $_SESSION['flash']['danger'] = "You can't enter this page - not logged in"; 
     header('Location: login/login.php'); 
     exit(); 
    } 
} 

login.php

session_start(); 
// ... Rest of code 
elseif(password_verify($_POST['password'], $user->password)){ 
$_SESSION['auth'] = $user; 
$_SESSION['flash']['success'] = 'You're now connected'; 
header('Location: ../profile.php'); // user's homepage 
exit(); 
+0

おっと、ありがとうございました!この小さなsession_start()を追加するだけで完全に動作しています。私のlogin.phpの中に!どうもありがとう ! – whitelamp

+0

聞いてよかった:) 他人に見られるようにこの回答を受け入れるべきです – Kryptur

関連する問題