2016-06-15 3 views
0

私はログイン時に他のユーザー情報を抽出しようとしています。自分のメールアドレスとパスワードを使用してログインできるように管理していますが、 。PHPのセッションで他の列を表示する方法

私はそうのようにログインしています:

$query = "SELECT * FROM users WHERE user_email = '". $email ."' AND user_password = '". $password ."'" ; 
$result = mysqli_query($con, $query); 

if (mysqli_num_rows($result) == 1) { 
    $_SESSION['user_email'] = $email; 
    header('Location: dashboard.php'); 
} else { 
    echo 'fail!'; 
} 

はその後、私のヘッダに私が持っている:

session_start(); 
if(!isset($_SESSION['user_email'])){ 
    header('Location: index.php'); 
    exit(); 
} else{ 
    $email = $_SESSION['user_email']; 
    echo 'Logged in'; 
} 

しかしFiを提供して、私はuser_firstnameをエコーやuser_lastnameしようとすることは当然のことながら、私はちょうど午前失敗しますないこれがどこに設定されるのか確認してください。

+0

行を取得するのはどうですか? –

+0

user_emailで他の詳細を渡す必要があります。または最高の場合でも、あなたはmysqlクエリを実行することができます。 user_emailを使用してデータベースから他の詳細を取得する – santosh433

答えて

2

クエリから行を読み込み、それからセッション変数を設定する必要があります。

if (mysqli_num_rows($result) == 1) { 
    $_SESSION['user_email'] = $email; 
    $row = mysqli_fetch_assoc($result); 
    $_SESSION['user_firstname'] = $row['user_firstname']; 
    $_SESSION['user_lastname'] = $row['user_lastname']; 
    header('Location: dashboard.php'); 
} else { 
    echo 'fail!'; 
} 

ヘッダーにセッション変数を出力できます。

session_start(); 
if(!isset($_SESSION['user_email'])){ 
    header('Location: index.php'); 
    exit(); 
} else{ 
    $email = $_SESSION['user_email']; 
    echo 'Hello, ' . $_SESSION['user_firstname']; 
} 

また、単にセッションに行全体を置くことができます:

$_SESSION['user_data'] = $row; 

その後は、特定のフィールドを取得するために$_SESSION['user_data']['user_firstname']を使用することができます。

+0

'$ row'データを(nother)配列(' $ _SESSION') 'に直接貼り付けることについて説明する良い点があります:') ' – Martin

+0

それは完璧な意味で、ヘッダーは、セッションを設定するときに、そのような情報を表示する最も良い方法は何ですか? – PhpDude

+0

私はそれを答えに加えました。 – Barmar

関連する問題