你好,我有一個登錄會話的問題。當我登錄的用戶我創造會話登錄問題,如果我編輯用戶名,而我登錄
$_SESSION['username']
將用戶重定向
header('location:profile.php?user='.$_SESSION['username']);
當我在編輯數據庫用戶的用戶名,因爲會話不匹配的用戶名再出現問題。我嘗試銷燬會話並在更新時創建新會話,但用戶顯示爲未登錄,並且在鏈接中顯示的是舊會話。
你好,我有一個登錄會話的問題。當我登錄的用戶我創造會話登錄問題,如果我編輯用戶名,而我登錄
$_SESSION['username']
將用戶重定向
header('location:profile.php?user='.$_SESSION['username']);
當我在編輯數據庫用戶的用戶名,因爲會話不匹配的用戶名再出現問題。我嘗試銷燬會話並在更新時創建新會話,但用戶顯示爲未登錄,並且在鏈接中顯示的是舊會話。
在這種情況下,您需要一個唯一的永久標識符,可將會話與您的數據庫行關聯起來。與此匹配的典型行是用戶標識,而不是用戶名。
如果您需要用戶名,您可以根據您的標識符運行查詢,並從該處繼續執行腳本。
當然,還有其他領域和方法可以幫助您實現這一目標,但從中獲得的主要想法是不使用可以修改的標識符。正如你已經發現的那樣,這樣做會導致你的會話和數據庫不同步。
我想使用ID然後我想顯示用戶名在鏈接,而不是id = 232131。 :) – user3058067
在您的用戶登錄頁面上,當檢查用戶的存在時,拉下找到的行並獲取用戶名。然後你可以使用它重定向到'profile.php?user = $ xyz'(: – Sean
**爲什麼**你在編輯數據庫中的用戶名?這是你經常做的事還是僅僅是爲了特定的情況? – anurupr
使用用戶標識代替用戶名。 – GuyT
更新後設置新的會話值,像這樣'$ _SESSION ['username'] = $ new_user_name;' – krishna