2014-10-28 41 views
0

我在使用會話調用存儲在mySQL數據庫中的數據時遇到了問題。這是我的代碼:PHP - 回顧使用會話存儲在數據庫中的信息

登錄頁面很簡單,輸入你的用戶名和密碼種類(我知道密碼仍然是明文,我打算稍後改變它)。

<?php 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title></title> 
    </head> 

    <body> 
     <div id="header"> 
      LOGO 
      <h1 align="center">TITLE</h1> 
     </div> 
     <br/> 
     <div id="login"> 
      <form id="loginform" name="loginform" method="post" action="checklogin.php"> 
       <table border="0" align="center"> 
        <tr> 
         <td>NIS</td> 
         <td></td> 
         <td><input type="text" name="nislogin" id="nislogin"/></td> 
        </tr> 
        <tr> 
         <td>Password</td> 
         <td></td> 
         <td><input type="password" name="pwdlogin" id="pwdlogin"/></td> 
        </tr> 
        <tr> 
         <td colspan="3" align="center"><input type="submit" name="loginbutton" id="loginbutton" value="Login"/></td> 
        </tr> 
       </table> 
      </form> 
     </div> 
    </body> 
</html> 

,這是爲登錄確認頁的代碼:我已經進入數據庫,用於測試目的的一些虛擬數據

<?php 
session_start(); 
$host="localhost"; 
$user="root"; 
$pass=""; 
$db_name="proyek"; 
$tbl_name="murid"; 
mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name'); 

$nis=($_POST['nislogin']); 
$pwd=($_POST['pwdlogin']); 
$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $_SESSION['nislogin']=$nis; 
    $nama=$result['nama']; 
    $_SESSION['nama']=$nama; 
    header("location:index.php"); 
    return true; 
    exit; 
} 
else 
{ 
    echo("Wrong NIS or password."); 
    return false; 
} 
?> 

; ID,密碼,名稱。我怎樣才能從數據庫中回憶一些東西,而用戶只能使用用戶名/ ID登錄?

我想在下一頁顯示'hello,name'之類的內容。幫助表示讚賞。

編輯:我編輯了基於反饋的代碼,它產生空白;像'你好',沒有名字。

+0

如果你想顯示的名稱,你最好把它添加到會話,以及這樣就可以不必在未來再次查詢數據庫訪問頁。 – jeroen 2014-10-28 01:41:23

+0

like $ _SESSION ['name'] = $ result ['name']?往上看。 – 2014-10-28 01:43:30

+0

是的,如果'name'當然是你的表中的一列。 – jeroen 2014-10-28 01:44:00

回答

0

首先,由於您在登錄檢查頁面上運行查詢,因此將該值用於會話而不是發佈數據。另外,無論何時重定向,都要退出腳本。

編輯:

既然你是在開發階段,你需要顯示一個錯誤,如果您的查詢失敗,所以你知道爲什麼。我也意識到你需要返回一個關聯數組來訪問該行。嘗試這個。

$sql="SELECT * FROM murid WHERE nis='$nis' and password='$pwd'"; 
$result=mysql_query($sql); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
    $data=mysql_fetch_assoc($result); // since you are only accessing one row, 
    // otherwise you would put this in a loop to build your array. 

    session_start(); 
    $_SESSION['nislogin']=$data['nis']; 
    header("location:index.php"); 
    return true; 
    exit; 
} 

我也看到你的登錄頁面上本次會議,但我沒有看到你曾經創造了它,我看不到的目的。

if(isset($_SESSION['nama'])) 
{ 
unset($_SESSION['nama']); 
} 

基本上所有你需要從這裏開始的會話index.php並輸出它。

的index.php

session_start(); 
if(isset($_SESSION['nislogin'])) 
{ 
$name = $_SESSION['nislogin']; 
} else { 
$name = "stranger"; 
} 

<body> 
Welcome, <?=$name?> 
</body> 
+0

感謝您的回答,我是否需要將session_start()直接放在index.php或檢查登錄名的頁面上?因爲在那個頁面會話是第一次創建的。我有一個名稱列的表,我需要調用,而不是將名稱變量分配給一個字符串。 – 2014-10-28 01:54:44

+0

在需要使用會話的任何地方需要'session_start()'。所以首先在它創建的頁面上,然後在你需要使用它的任何頁面上(index.php)。 – EternalHour 2014-10-28 01:56:43