1. 程式人生 > >關於用戶禁用Cookie的解決辦法和Session的圖片驗證碼應用

關於用戶禁用Cookie的解決辦法和Session的圖片驗證碼應用

初始 ssi var 當前 session共享 購物 技術 禁用 apache

  當用戶通過客戶端瀏覽頁面初始化了Session之後(如:添加購物車,用戶登陸等),服務器會將這些session數據保存在:Windows保存在C:\WINDOWS\Temp的目錄下,Linux則是保存在/tmp 或 /var/lib/php/session目錄下,之後給客戶端返回一個Set-Cookie的參數(該參數表示在服務器端創建的Session_ID,可在http協議中看到),當該服務器的其他web端需要Session數據時則客戶端會向服務器發送這個Session_ID,服務器就可以從Session文件中查找並調用;

  如果當用戶在客戶端禁用Cookie之後,如何實現Session共享多個頁面;URL重寫則可以解決;

  可以使用PHP提供的一個常量SID;這個常量可以獲取到當前客戶端在服務器所創建的Session文件的session_ID(文件名);使用方法;

    第一種方法,在超鏈接,action,header可以直接拼接將ID傳遞給需要session數據的頁面,同時需要在頁面寫判定當讀取到SID存在時則使用當前SID,若無則在服務器重新session_start()一個新的Session文件;

    if(isset($_GET[ ‘ SID ‘ ])){

      session_id($GET_[ ‘ sid ‘ ];

    }

    session_start();

    第二種方法,可以在php.ini文件中找到session.use_trans_sid = 1 ;來指定是否啟用透明SID,啟用之後在超鏈接,action,header,會自動將SID傳遞,設置完成重啟apache生效;

  使用Session驗證碼技術;

    要想使用Session的驗證碼技術,首先要啟用PHP自帶的繪圖庫,應該在php.ini文件目錄下啟用 extension=php_gd2.dll ,重啟apache生效;

    首先在需要驗證碼的界面加上輸入文本框和圖片,圖片會請求checkCode頁面隨機生成一個驗證碼,並且寫上點擊隨機更換的代碼;

    技術分享圖片

    其次在checkCode頁面生成4個隨機數並組合成字符串,通過PHP的繪圖技術隨機添加背景色幹擾線以及隨機生成的字符串,最後生成圖片返回給客戶端頁面,並將生成的四位隨機數保存在Session中;

    技術分享圖片

  當輸入驗證碼進行驗證時,在驗證頁面寫一個判斷語句,判斷文本框輸入的值是否不等於$_Session[ " mycheckCode " ];

  這只是一個簡單的案例,如今的驗證碼技術也是各有千秋,破解驗證碼的技術也平分秋色,驗證碼也就是阻撓一小撥別有用心的人;

  

關於用戶禁用Cookie的解決辦法和Session的圖片驗證碼應用