2016-09-19 13 views
1

ユーザーが正常に認証されると、ユーザーがトレーニングに登録していない場合、register.phpにリダイレクトされます。私は注目しています:未定義のインデックス:セッションを使用してログインしました

ユーザーが既にトレーニングに登録している場合、彼はトレーニングクラスを表示/変更するためにregistered.phpにリダイレクトされます。

これまでのところ、これは問題なく動作します。

問題点ユーザーがregister.phpまたはregistered.phpに直接アクセスしようとすると、まずログインせずにいずれのWebページにもアクセスできません。

これは私が予防しようとしているものですが、私は次のエラーメッセージ取得しておく:ここ

Notice: Undefined index: loggedin in .... on line 3 
Please log in first to see this page 

は、私はこれまで、あなたの助けに感謝します使用していますものです。 login.phpで

//login.php 

$user = trim($_POST['user']); 
$pass = trim($_POST['pass']); 

    // hash to sanitize the input further 
    $pass = md5($pass); 

    $tSQL = "SELECT u.empl_first, u.username FROM users u inner join Training t on u.Employee_Id = t.Employee_ID WHERE USERNAME = ? 
    and PASSWORD = ? "; 

    $params = array($user, $pass, $params); 
    $sqll = sqlsrv_query($con, $tSQL); 

if ($objResult = sqlsrv_fetch_array($sqll, SQLSRV_FETCH_ASSOC)) { 
    $firstname = $objResult["empl_first"]; 
    $_SESSION["firstname"] = $objResult["empl_first"]; 
    $_SESSION['loggedin'] = true; 
    $_SESSION['username'] = $user; 
    header('location:registered.php'); 
    } 
    else 
    header("location:register.php?user='".ms_escape_string($user)."'&pass='".ms_escape_string($pass)."' "); 

sqlsrv_close($con); 

?> 

//register.php

<?php 
session_start(); 
if (!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] != true) { 
    echo "Please log in first to see this page"; 
} 
+1

このコード行に 'if(!isset($ logged SESSION ['loggedin'])&& $ _SESSION ['loggedin']!= true)' ....を見て、ログインページの '未定義インデックスエラー' – RiggsFolly

+1

も削除してセッションを開始します。 –

+0

@RiggsFolly、それは素晴らしいコードです。私はまだ同じエラーが発生しています。 ところで、はい、私はsession_start()を持っています。ページの一番上に表示されます。これを理解するためにはエラーがなぜ重要なのかを理解する。 ありがとうもう一度 – Tairoc

答えて

3

2つのミスがあります: -

login.php$_SESSIONで変数を設定するコードが動作するように、スクリプトの先頭にsession_start();を使用してセッションを開始するには。 register.php変更変数がないと判明した場合、その後IFはIFすなわち!isset($_SESSION['loggedin'])の最初の部分では存在し$_SESSION['loggedin'] != trueをテストしません

if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] != true) 

if (!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] != true) 

からIF文で

+0

あなたのお役に立てています。間違った行に$ _SESSION ['loggedin']がありました。 ご協力いただきありがとうございます – Tairoc

0

上にsession_start();どこかを持っています。

セッションを使用する各スクリプトには、そのスクリプトが必要です。

関連する問題