2016-11-22 4 views
0

ダンストレーナーのためのダンストレーナーのためのplattformを現在取り組んでいます... トレーナーはアカウントを作成します そのアカウントでログイン - >メールとパスワードが正しくあれば、それらの変数の中にユーザのID、メールなどがあり、それらの変数がユーザによって開始された後にユーザロール(adminまたはuser/1または2) が開始され、実際のユーザーエリアのWebサイトに転送されます。 ここで、セッション変数が設定されているかどうか、およびユーザーロールがそのページにアクセスできるほど高いかどうかを確認します。管理者またはログインページ(adminの場合はrole = 2、roleの場合は! 2) しかし、変数は最初のログイン試行に保存していない、あなたは二回にログインする必要があります....ここPHPセッション変数は、2回目の試行でのみ保存します

は私のコード

ログインページです:

session_start(); 
    include('connect.php'); //mysql connection function 
    if (isset($_POST["login"])) // check if login attemp exists 
    { 
     //get mail from form 
     $mail = mysqli_real_escape_string($verbindung, $_POST["mail"]); 

     //get password from form 
     $pw = mysqli_real_escape_string($verbindung, $_POST["pw"]); 

     //check if user exists in db 
     $sql = "SELECT * FROM user_db WHERE mail = '$mail'"; 
     $query = mysqli_query($verbindung, $sql); 

     while ($user = mysqli_fetch_object($query)) 
     { 
      if (password_verify($pw, $user->password)) 
      { 
       // set session variables 
       $_SESSION["login"] = $user->acc_type; //role 
       $_SESSION["id"] = $user->id;   //id 
       $_SESSION["vorname"] = $user->vorname; 
       $_SESSION["mail"] = $user->mail; 
       $_SESSION["nachname"] = $user->nachname; 
      } 
     } 
    } 

    // check if login attempt succeded and get the user role 
    if ($_SESSION["login"] == 1) 
    { 
     // if role is user goto user page 
     echo '<meta http-equiv="refresh" content="100; URL=user" />'; 
    }else if ($_SESSION["login"] == 2) 
    { 
     if role is admin goto admin page 
     echo '<meta http-equiv="refresh" content="100; URL=admin" />'; 
    } 

ユーザー/管理者ページ(どちらも同じコード/エラー):

session_start(); 
if ($_SESSION["login"] == '2') 
{ 
    //goto admin if user is admin 
    echo '<meta http-equiv="refresh" content="0; URL=../admin">'; 
}else if ($_SESSION["login"] != '1') 
{ 
    //goto login if user is neither role 1 or 2 
    //this one triggers allways if it is your first attempt to login 
    //it behaves like the session didnt start on the login page but i dont know why 
    echo '<meta http-equiv="refresh" content="0; URL=../">'; 
} 
+0

あなたは、ログイン後、ユーザーが再度ログインにリダイレクトされるという意味ですか? さらに、 なぜあなたはヘッダーの場所を使用していませんか? なぜinfosecをチェックせずにクエリを使用していますか? – Buddhi741

+0

はい、ログインをクリックすると、ユーザーページにリダイレクトされますが(これはどうなりますか)、セッション変数が設定されていないため、再度ログインページにリダイレクトされます。しかし、ログインをやり直すと、すべてがうまく動作する –

+0

注入されたヘッダーの場所について聞いたことがないので、/私はそれらを今すぐGoogleに渡します:) –

答えて

0

ここでは問題を再現できません。あなたのコードは完璧に動作します。

共有ホストを使用していますか?共有ホストの中には、セッションで愚かなことがあります。

+0

まだベータ版ですが、http://streetdance-contest.deで共有ホストが何を意味しているかを直接確認することはできますか?私はhosterとしてHetzer.deを使用しています –

+0

この回答はコメントではなく、回答でなければなりません。そして、言語をきれいにしようとする。 – Barmar

+0

共有ホストは、複数のサイトが同じサーバー上でホストされている場合です。彼らは時にはセッションになると物事を混乱させるのが好きです。 – Flole

関連する問題