客戶端頁面字符集對session的影響

2021-08-25 20:46:23 字數 769 閱讀 8665

session是使用在服務端的,跟客戶端的頁面字符集怎麼會扯上關係呢?這多少會讓人有些困惑。不過若從session的工作原理來理解的話,就容易明白了。關於session的工作原理,請參考

假設使用者從頁面a輸入使用者名稱和密碼,然後提交到頁面b對使用者名稱和密碼進行驗證,如果通過驗證,則把使用者名稱存入session中,然後再重定向到頁面c。頁面c需要判斷使用者是否已經登入,如果沒有,則拒絕訪問。在我開發的乙個**中,頁面b的**如下:

print "";

session_start();

$_session['username']=$username;

print "";

為什麼有print "";這句呢,主要是為了避免給國外的使用者訪問時會出現亂碼。頁面c檢測使用者是否登入的**如下:

session_start();

if($_session['username']=="")

這樣使用者每次都得登入兩次才能登入成功,是什麼問題會造成這種情況呢?排查了乙個上午,終於發現了問題所在,就是這個搞的鬼,造成頁面b儲存session和頁面c讀取session不一致,最根本的原因就是會對儲存在客戶端cookie中的phpsessid編碼產生影響。解決方案就是每個頁面寫入讀取session前客戶端頁面編碼也要一致。對於我這邊,只要把頁面c的**調整為如下即可:

print "";

session_start();

if($_session['username']=="")

問題特殊,google了很久,沒找到同類的問題和解決方案,故撰此文,以此志之。

切換 ORACLE 客戶端字符集

切換 oracle 客戶端字符集 database characterset al32utf8 and client character set zhs16gbk are different.character setconversion may cause unexpected results.n...

修改oracle客戶端字符集

當本機oracle設定的字符集與伺服器端的字符集不一致時,非英文本元會變成亂碼,以下是解決方案 1,檢視伺服器和本地客戶端的字符集 其實檢視伺服器的就可以了 資料庫伺服器字符集select from nls database parameters,其 於props 是表示資料庫的字符集。客戶端字符集...

《切換 ORACLE 客戶端字符集 》補充

切換 oracle 客戶端字符集 補充 1 儘管兩端的字符集不同,al32utf8 有可能是會自動轉換成 zhs16gbk 的,因此,可以不必計較這個提示,只要能生成使用就可以。2 有可能轉換以後,反而客戶端就不正常了。3 執行這個批處理以後,並不會立即生效。通常需要重啟系統,才會使環境變數的修改生...