2013-04-15 64 views
0

我有一個以會話電子郵件開始的登錄表單。現在,因爲我希望能夠通過表單更新電子郵件地址,而不會中斷會話,所以我需要將會話更改爲ID。問題是它不會將id值發送給會話,它只給出值1,如下所示:www.mysite.com/profile.php?uid=1而不是返回真實的id號。

任何想法?

<?php 
if(isset($_SESSION['email'])){ 
    $_SESSION['uid'] = fetch_user_id($_SESSION['email']); 
    header("Location: profile.php?uid=" . $_SESSION['uid']); 
    die(); 
} 
?> 

<?php 
function fetch_user_id($email){ 
    global $db; 
    $query = $db->query("SELECT id FROM user WHERE email='{$_SESSION['email']}'"); 
    $row = $query->fetch(PDO::FETCH_ASSOC); 
    return true; 
} 
?> 
+0

爲什麼你的函數返回'true'而不是所需的值? – mario

回答

1

$row被發現存放結果的結果,即(陣列),你想要的是$row['id']

+0

oo ofcourse,馬上工作:) 謝謝你的朋友。 – Dymond

+0

*'$ rows'是一個數組...... *會更準確。 –

+0

你是對的,它返回一個數組或'false' – 1337holiday

1

那是因爲你是從你fetch_user_id函數返回值true。爲了獲得正確的結果,您需要返回$row陣列中的用戶標識。

function fetch_user_id($email) { 
    global $db; 
    $query = $db->query("SELECT id FROM user WHERE email='{$_SESSION['email']}'"); 
    $row = $query->fetch(PDO::FETCH_ASSOC); 
    return $row['uid']; // whatever your user id column is called 
}