2016-01-14 39 views
0

我試圖從我的登錄腳本中傳遞用戶數據,以便在使用會話時在網站上的任何其他位置我可以在需要時提供用戶表中的用戶信息。由於它目前站在我只能顯示用戶名,我還有其他信息,如電子郵件地址,姓氏,名字等:從登錄腳本傳遞用戶信息

<?php 

ob_start(); 

include('db_con.php'); 

$username=$_POST['username']; 
$password=$_POST['password']; 

$sql="SELECT password FROM users WHERE username = ?"; 

$stmt = mysqli_prepare($db, $sql); 


$stmt->bind_param("s", $username); 

$stmt->execute(); 
$stmt->store_result(); 

if($stmt->num_rows()) { 
    $stmt->bind_result($hashed_password); 
    $stmt->fetch(); 

    if(password_verify($password, $hashed_password)) { 
     session_start(); 
     $_SESSION['loggedin'] = true; 
     $_SESSION['username'] = $username; 
     header("location:home.php"); 
    } else { 
     echo "Wrong Username or Password"; 
    } 
} else { 
    echo "User is not found!"; 
} 

ob_end_flush(); 
?> 

下面是我的會話設置:

<?php 
// Uer sessions 
session_start(); 
?> 
    <?php if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true): ?> 

    <?php echo $_SESSION['username']; ?> 
    <?php echo $_SESSION['emailAddress']; ?> 
    <br /> 
    <?php echo "<a href='logout.php'>Logout</a>"; ?> 

    <?php endif; ?> 

我很努力地看到我能通過其他細節傳遞給會話來輸出它們嗎?

+0

保存用戶i d,然後在需要用戶數據時從數據庫中提取用戶。 – JimL

+0

我在做登錄腳本嗎?你有一個例子嗎? – PhpDude

回答

1

我假設那些額外的細節(如名字,姓氏,電子郵件地址)包含在您的用戶數據庫表中?

如果是這樣,您可以修改您的SQL查詢以獲取這些值,然後設置會話變量以存儲它們。

例如(我假設你的列被命名爲「姓名」,「姓」和「電子郵件」):

$sql="SELECT password, firstname, lastname, email FROM users WHERE username = ?"; 
$stmt = mysqli_prepare($db, $sql); 
$stmt->bind_param("s", $username); 
... 
$stmt->bind_result($hashed_password, $firstname, $lastname, $email); 
... 

然後,當您確認密碼匹配,設置會話用正確的值的變量:

$_SESSION['loggedin'] = true; 
$_SESSION['username'] = $username; 
$_SESSION['firstname'] = $firstname; 
$_SESSION['lastname'] = $lastname; 
$_SESSION['email'] = $email; 

最後,輸出那些,無論你喜歡的值,例如:

echo $_SESSION['email']; 
+0

我爲自己嘗試這一項時遺漏了一件事'$ stmt-> bind_result($ hashed_pa​​ssword,$ firstname,$ lastname,$ email);'非常感謝你! – PhpDude

+0

不客氣。希望它有幫助。如果是這樣,你想介意這個答案嗎?乾杯! –