php session無法儲存問題解決辦法

來源:互聯網
上載者:User

因為正確的驗證碼結果已經經過加密之後儲存在了session中,所有用於輸入的驗證碼會跟session中的進行比對,從而判斷驗證碼是否輸入有誤!

既然老是顯示:"驗證碼輸入有誤"

說明session中儲存到結果可能有問題。然後,dump下session,發現結果為null......

解決辦法:

使用phpinfo查看session資訊,找出session的儲存路徑,然後給其設定寫入的許可權即可

如果無法解決可以參考下面

現在我們來拋開cookie使用session,主要途徑有三條:

1、設定php.ini中的session.use_trans_sid = 1或者編譯時間開啟開啟了–enable-trans-sid選項,
讓PHP自動跨頁傳遞session id。
2、手動通過URL傳值、隱藏表單傳遞session id。
3、用檔案、資料庫等形式儲存session_id,在跨頁過程中手動調用。

例子,php利用session登入退出的簡單例子

登入

<?php
//使用會話記憶體儲的變數值之前必須先開啟會話
session_start();
//使用一個會話變數檢查登入狀態
if(isset($_SESSION['username'])){
    echo 'You are Logged as '.$_SESSION['username'].'<br/>';
    //點擊“Log Out”,則轉到logOut頁面進行登出
    echo '<a href="logOut.php"> Log Out('.$_SESSION['username'].')</a>';
}
/**在已登入頁面中,可以利用使用者的session如$_SESSION['username']、
 * $_SESSION['user_id']對資料庫進行查詢,可以做好多好多事情*/
?>

退出

<?php
//即使是登出時,也必須首先開始會話才能訪問會話變數
session_start();
//使用一個會話變數檢查登入狀態
if(isset($_SESSION['user_id'])){
    //要清除會話變數,將$_SESSION超級全域變數設定為一個空數組
    $_SESSION = array();
    //如果存在一個會話cookie,通過將到期時間設定為之前1個小時從而將其刪除
    if(isset($_COOKIE[session_name()])){
        setcookie(session_name(),'',time()-3600);
    }
    //使用內建session_destroy()函數調用撤銷會話
    session_destroy();
}
//location首部使瀏覽器重新導向到另一個頁面
$home_url = 'logIn.php';
header('Location:'.$home_url);
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.