2013-11-27 42 views
0

用戶登錄後,他們被重定向到他們的個人資料頁面。在該個人資料頁面中,他們將能夠看到他們的用戶名,並在該屏幕上打印出與該帳戶相關聯的電子郵件,因此如果其他人訪問他們的個人資料,他們可以看到聯繫信息。如何打印從PHP會話中存儲的數據?

public function Login($username, $password){ 
    if(!empty($username) && !empty($password)){ 

     $stmt = $this->db->prepare("SELECT username, password, email FROM users WHERE BINARY username = ? AND BINARY password = ?"); 
     $stmt->bindParam(1,$username); 
     $stmt->bindParam(2,$password); 
     $stmt->execute(); 

     if($stmt->rowCount() == 1){ 
      $_SESSION["username"] = $username; 
      $email = $stmt->fetchColumn(4); 
      $_SESSION["email"] = $email; 
      header('Location: http://www.mywebsite.com/dev/profile.php'); 
     }else{ 
      echo "Incorrect username or password please try again."; 
     }    
    }else{ 
     echo "Must type a username and password to login."; 
    }  
    } 
}//End of login function 

這是不登錄的功能,它應該設置課程,現在實際上只在用戶名會話在配置文件被打印出來,電子郵件不顯示。

<?php echo '<h1>'.htmlentities($_SESSION["username"]).'</h1>'; ?> 
<?php echo '<h1>'.htmlentities($_SESSION["email"]).'</h1>'; ?> 

這是怎麼了打印會話,就像我只能是越來越打印的用戶名,我的想法之前說的,我究竟做錯了什麼?在你的PHP代碼

<?php session_start(); ?> 

然後

回答

0

問題可能是在fetchColumn方法的參數。試試這個:

$email = $stmt->fetchColumn(2); 
+0

這樣做的伎倆,但怎麼回事?我把4,因爲我認爲你必須計算我的數據庫中的列數和電子郵件碰巧是4. – phpnoob

+0

fetchColumn參數是在您的查詢中寫入的字段的順序,而不是數據庫的列的順序。就我個人而言,我認爲將這種方法用於多個領域是一個糟糕的主意。 –

0

開始PHP會話的會話數組中設置的值。

+0

他已經使用了session_start(),否則他無法在會話中回顯用戶名。 – tttpapi

+0

哪個會話數組?而且,我已經開始在登錄php和個人資料php會話。用戶名打印出來就像我想要的不是電子郵件 – phpnoob

0

可以打印會話變量這樣 -

<?php 

session_start(); 

$NAME=$_SESSION['l_id']; 

echo "Name is ".$NAME; 
?> 
+0

這不會幫助。您不需要使用變量來回顯會話。 – tttpapi