2014-03-03 49 views
0

你好,我有一個登錄會話的問題。當我登錄的用戶我創造會話登錄問題,如果我編輯用戶名,而我登錄

$_SESSION['username']

將用戶重定向

header('location:profile.php?user='.$_SESSION['username']);

當我在編輯數據庫用戶的用戶名,因爲會話不匹配的用戶名再出現問題。我嘗試銷燬會話並在更新時創建新會話,但用戶顯示爲未登錄,並且在鏈接中顯示的是舊會話。

+3

**爲什麼**你在編輯數據庫中的用戶名?這是你經常做的事還是僅僅是爲了特定的情況? – anurupr

+1

使用用戶標識代替用戶名。 – GuyT

+0

更新後設置新的會話值,像這樣'$ _SESSION ['username'] = $ new_user_name;' – krishna

回答

2

在這種情況下,您需要一個唯一的永久標識符,可將會話與您的數據庫行關聯起來。與此匹配的典型行是用戶標識,而不是用戶名。

如果您需要用戶名,您可以根據您的標識符運行查詢,並從該處繼續執行腳本。

當然,還有其他領域和方法可以幫助您實現這一目標,但從中獲得的主要想法是不使用可以修改的標識符。正如你已經發現的那樣,這樣做會導致你的會話和數據庫不同步。

+0

我想使用ID然後我想顯示用戶名在鏈接,而不是id = 232131。 :) – user3058067

+0

在您的用戶登錄頁面上,當檢查用戶的存在時,拉下找到的行並獲取用戶名。然後你可以使用它重定向到'profile.php?user = $ xyz'(: – Sean