php_mvc實現步驟九(登錄驗證碼,退出-登錄標記)


shop34-17-登錄驗證碼

驗證碼的分析

登錄:防止暴力破解

論壇:防止灌水水

展示類:被抓取。

需要技術:

圖片處理技術。

會話session技術。

PHP圖片處理技術 – GD

具體操作步驟

開啟GD擴展

Apache restart

場景:

制作500×300的綠色圖片

創建畫布

畫布,一種資源型數據。可以操作的圖像資源。

創建新畫布(新建)

ImageCreate(,高)創建基於調色板的畫布。

imageCreateTrueColor(,高);創建真彩色的畫布。

基於圖片創建畫布(打開)

imageCreateFromJPEG(圖片地址);

imageCreateFromPNG(圖片地址);

imageCreateFromGIF(圖片地址);

操作畫布

分配顏色:如果需要在畫布上使用某個顏色,應該先顏色分配到畫布上。

使用函數:

顏色標識 = imageColorAllocate(畫布RGB);

顏色的表示方式:

RGB

填充畫布:填充點,連續並且顏色相同的點進行填充(替換)

使用函數:

imageFill(畫布, 填充位置x 填充位置Y顏色標識)完成

位置采用坐標進行管理:

原點00,畫布的左上角。

向右x軸增加,向下Y增加。

右下角坐標:width-1,height-1

輸出畫布

畫布中處理好的圖樣信息,輸出出來。

典型

1輸出到圖片文件。

2直接輸出。

使用函數:

imagePNG(畫布[, 文件地址]):

imageJPEG();

imageGIF();

如果沒有第二個參數,表示直接輸出。

如果直接輸出到瀏覽器,需要告知瀏覽器,響應數據類型應該是PNG格式的圖片:

使用指令Content-type

tip:一個畫布可以輸出多次,輸出為各種格式!

銷毀畫布資源

imageDestroy();

項目中實現驗證碼

驗證碼工具

Framework/tool/Captcha.class.php

自動加載:

生成驗證碼圖片:

Session開啟重復避免:

背景圖位置:

登錄表單時展示

登錄表單頁面,通過IMG標簽,請求生圖片的URL地址,展示圖片。

<img src=”URL” />

增加一個動作,用於完成生成后台登錄界面的驗證碼圖片:

Back/AdminController->captchaAction();

頁面img標簽的src屬性,請求該動作:

Tip:如果圖片顯示失敗,如何調試?

應該直接請求生成圖片的地址而不是在img標簽中查看。

我的程序,應該將captchaAction()也列為登入認證例外:

后台的平台控制器:

結果

點擊更換:

通過點擊事件,對生產驗證碼圖片的地址重新請求,形成新驗證碼,進行展示!

如果img標簽的src屬性被更改,則瀏覽器會對新的url進行請求,展示在img圖片區域內。

驗證管理信息前驗證

驗證管理員信息的合法性前,對驗證碼作出驗證:

Back/AdminController->checkAction();

增加驗證碼工具類Captcha的方法

checkCaptcha()

 

Back/AdminController->checkAction();

利用上面的方法完成驗證:  

tip:圖片程序錯誤解析

step1 請求生成圖片的URL

語法錯誤

邏輯錯誤:

此時,如果出現語法錯誤,頁面會有相應的提示。

但是沒有語法錯誤,就如上面的結果,提示圖片內部錯誤無法顯示:

Step2header(‘Content-Type:image/jpeg’)注釋

解決即可!

圖片不能展示的原因:額外輸出

BOMutf-8編碼文件的簽名,三個字節的隱藏字符。也是輸出的!

shop34-18-退出-登錄標志

退出

銷毀登錄標志,

Session中存儲的is_login

控制器-動作

修改top模板,請求到退出動作:   

登錄標志

通常還具有存儲當前登錄用戶管理員)信息的功能!

存儲登錄標志時,獲取當前管理員信息,存儲到session

Back/AdminController->checkAction();

需要back/AdminModel->check()方法,返回的為管理員信息合法情況下):

back/PlatformController->_checkLogin()驗證管理員是否登錄時,使用admin下標:

退出時,銷毀的也是該標志:

Back/AdminController->logoutAction();

頁面上可以獲取管理員信息:

Back/top.html中,顯示你好 管理員

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM