關於php驗證碼無法顯示的問題的自我反思

來源:互聯網
上載者:User

標籤:c   style   class   blog   a   http   

很早之前在金華佗創業團隊的時候,團隊的內部網站後台登陸的驗證碼無法正常顯示。當時正在開始學習php,所以對於php的繪圖技術並不瞭解,也不知道驗證碼的作用....

我請教一個學習php的師兄,師兄可能當時比較忙吧,他給我的建議就是去伺服器,把驗證碼這一塊的代碼給注釋了,不用驗證碼的功能。這樣做果然省事,但只是個權宜之計,只能暫時蒙一蒙不懂技術的老闆,所以當時這件事情就暫時過去了.

事後我反思了一下,有兩點感悟:

1)一個科技公司,有一個技術總監很重要。不懂技術的話,老闆也會被一個菜鳥“欺負”

2)對於一個程式員來講,遇到問題,選擇逃避的話是永遠不會成長。搞技術就是一個不斷遇到問題到熟悉解決問題的過程,這就是企業招人時很注重的項目經驗。

第一次遇到驗證碼無法顯示的問題,我選擇了逃避,所以也錯過了學習新知識的機會。直到後來自己獨立開發的一個項目,裡面也有GD驗證碼驗證。這一次,我決定對它一探個究竟...

原來php裡面封裝了一個叫GD的函數庫,主要負責實現php繪圖的功能。而驗證碼,主要包含了兩部分:隨機數字和有php繪製出來的圖片,兩者都是隨機組合的。四個隨機數位話是通過調用一個叫rand()函數產生,驗證碼中那些讓你看不清驗證數位圖片則是通過調用GD庫中的函數來繪製而成。有了這樣一個概念之後,要想實現驗證碼功能,所以要在php.ini(php設定檔)啟用GD庫。之前自己遇到的驗證碼無法顯示的原因,主要是由於沒有在php.ini檔案中啟用GD庫。

如何查看是否啟用GD庫呢?

通過一個叫phpinfo()函數,可以查看所有跟php相關的配置資訊。

配置資訊顯示如下:

這裡顯示的GD support 的狀態為enabled,說明我的GD庫已經啟用。如果顯示的是disabled,說明未啟用。下面主要針對未啟用的情況來講解。

第一步:通過phpinfo()函數查看所有的php配置資訊,並在配置資訊中查看php.ini檔案所在的路徑。

找到“Loaded Configuration File”選項,它就是指配置資訊檔所在的位置。這裡顯示的本機安裝appserver後php.ini檔案的路徑為“C:\windows\php.ini”,然後去C盤的windows目錄下找到php.ini檔案:

用我心愛的sublime text3開啟該檔案:

 

在檔案中找到extension=php_gd2.dll(或者extension=php_gd.dll)選項,把前面的“;”去掉即可,重啟apache,這時就可以看到你的驗證碼了

//==============================================================================================//

通過以上的方法解決了驗證碼顯示的問題,顯得很有成就感,學習的自信也就是這樣一點一點的建立起來了 。

PS補充:關於驗證碼防止惡意註冊的原理

關於驗證碼的作用,之前只是大概瞭解到時為了防止惡意註冊。可是防止惡意註冊的原理是怎樣的呢?這個自己倒沒有認真思考過,腦中的概念是誰會那麼無聊註冊一邊又一遍的填寫那個驗證碼啊。

很多網站在你登入的時候或註冊的時候都要求你按隨機產生的圖片上的數字或字母輸入,為什麼這麼麻煩呢?那是出於安全的考慮。

以前的網站,菜鳥級的駭客都會用暴力破解軟體來破解已知他人帳戶名稱但是還不知道密碼這樣的帳戶原理之一就是先在"帳戶名稱"這一欄填入已知帳戶,然後破解軟體按照事先準備好的密碼規則字典逐個輸入,然後登入。如果密碼無效(登入失敗)便重新整理登入頁面再次輸入,直到登陸成功便返回登入成功的有效密碼。這樣帳戶的密碼也就被破解了。所以用這樣的軟體破解一個有效帳戶的密碼只是時間的問題。

而現在在登入頁面加入驗證碼則有效解決了這個問題。因為驗證碼是你進入該頁面時隨機產生的一組數字,你必須輸入這組數字,再加上正確的帳戶和密碼才允許登入。而這組圖片是以圖片的方式提供的,要想按照以前的破解方法進行破解,首先必須解決“如何提取圖片中的驗證碼”這樣的問題。但是對於目前的破解軟體而言,提取圖片式的資訊是很難或者說根本不可能的。所以就達到了保護使用者帳戶安全性的目的。


 

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.