2012-11-29 19 views
1

我有一個註冊腳本,其中用戶標識在註冊後被保存爲會話變量並且用戶被重定向到其主頁。出於某種原因,用戶標識未存儲在會話變量中。這個完全相同的腳本在不同的項目上工作,我簡單地接受了項目並更改了數據庫連接設置,現在它不工作。作爲PHP會話的MySQL值

這裏是註冊腳本:

mysqli_connect($db_host, $db_user, $db_pass) OR DIE (mysqli_error()); 
    // select the db 
    mysqli_select_db ($link, $db_name) OR DIE ("Unable to select db".mysqli_error($db_name)); 

    // our sql query 
    $sql = "INSERT INTO seekers (first_name, last_name, username, email, password, salt) VALUES ('$firstName', '$lastName', '$username', '$email', '$hashedPW', '$salt');"; 

    //save the updated information to the database   
    $result = mysqli_query($link, $sql) or die("Error in Query: " . mysqli_error($link)); 
    if (!mysqli_error($link)) { 

     $row = mysqli_fetch_assoc($result); 
     $_SESSION['user_id'] = mysqli_insert_id($link); 
     $_SESSION['loggedin'] = TRUE; 
     header("Location: ../index.php"); 
    } 

這裏是受保護的頁面上的會話檢查和數據庫查詢:

session_start(); 

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

    include_once('includes/user.header.php'); 

    //set user_id 
    $user_id = $_SESSION['user_id']; 

    //include the logged in user header 
    include_once('includes/user.header.php'); 

    //select user information according to their logged in user_id 
    $sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"'); 
    $row = mysqli_fetch_assoc($sql); 

    //create piece name together 
    $firstName = $link->real_escape_string($row['first_name']); 
    $lastName = $link->real_escape_string($row['last_name']); 
    $fullName = $firstName. " " .$lastName; 

    //get username 
    $username = $link->real_escape_string($row['username']); 

當我重定向到index.php頁面,一切看起來很好,除了沒有任何用戶信息被從數據庫中查詢。

任何人都可以看到這裏有什麼問題嗎?我知道這應該是一件小事,我只是在看它。

請任何幫助將不勝感激。

編輯:所有信息也成功存儲在數據庫中。

+0

你可以發佈在索引頁面上查詢數據庫的代碼嗎?如果信息正確存儲在數據庫中,則查詢腳本必須有錯誤。 – David

+0

你有註冊腳本頂部的session_start()嗎? – kennypu

+0

是的,我在註冊腳本的頂部有'session_start()'。而我更新我的問題與索引頁查詢 –

回答

0

您正在嘗試使用USER_ID沒有選擇查詢......你的確應該獲得最後插入ID

改變的線;

$_SESSION["user_id"]=mysql_insert_id(); 

if (!mysqli_error($link)) 

應該

if (!mysqli_error($result)) 

$sql = $link->query('SELECT * FROM seekers WHERE id = "'.$user_id.'"'); 

$sql = $link->query('SELECT * FROM seekers WHERE user_id = "'.$user_id.'"'); 
+0

這不是我的朋友,它正在改變「ID」爲「user_id」... –

+0

和是+語法錯誤太:) –