yii怎麼搞註冊
註冊
在advanced範本中,進入frontend/index.php?r=site/signup頁面,可以看到框架的註冊頁面
填入Username、Email和Password後點擊Signup後,如果格式不對,frontend/models/SignuForm中的rules()函數會進行初步驗證,所有格式正確後,資料傳輸到frontend/controllers /SiteController中的actionSignup()函數中,函數載入使用者輸入的註冊訊息,在frontend/models/SignupForm中的signup()函數,
以下引用的文字為解釋函數中的具體細節,不閱讀不影響整體,因為沒有折疊文字功能,故採用引用的方法,下同
if (!$this->validate()) { return null; }
signup() 函數首先調用yii2/base/Model中的validate() 函數進行驗證
第一步,清除使用frontend/models/SignuForm中的rules()函數在使用者輸入時的錯誤訊息
if ($clearErrors) { $this->clearErrors(); }
第二步,beforeValidate()函數觸發beforeValidate事件並傳回true
第三步,設定scenario,預設是default
第四步,因為這裡的$attributeNames為null,
$attributeNames = $this->activeAttributes();
執行後返回
#array (3) { [0]=> string(8) "username" [1]=> string(5) "email" [2]=> string(8) >"password" }
第五步,$this->getActiveValidators()會得到驗證#frontend/models/SignuForm中的rules()中11條驗證規則給validateAttributes()進行驗證
#第六步,執行afterValidate()函數觸發afterValidate事件
最後如果所有驗證都通過,$this->hasErrors()為false,所以函數最後回傳true
#我們看一下資料表user的欄位
使用者輸入了username、password和email,Yii2框架是如何產生其他的欄位的呢,先看password_hash,在SignupFrom中的signup函數中的密碼產生是setPassword函數,該函數在common/models/User中,setPassword函數呼叫了yii2/base/Security中的每一條規則generatePasswordHash函數。
if (function_exists('password_hash')) { /** @noinspection PhpUndefinedConstantInspection */ return password_hash($password, PASSWORD_DEFAULT, ['cost' => $cost]); }
如果有,就使用password_hash函數進行加密,如果PHP沒有password_hash函數,就使用crypt函數加密,初步判斷應該是為了相容PHP低於5.5的版本,畢竟大於5.5的版本才開始有password_hash函數
common/models/User的signup()函數在對password加密後,就會繼續產生一個auth key,auth key是當使用者在登入的時候點選remember me的時候的驗證訊息,
auth key產生的方法也是在yii2/base/Security中的generateRandomString,generateRandomString呼叫generateRandomKey函數,如果你的PHP版本是5.2~5.6或是7,那就是用random_bytes產生一個32個字節的字串,如果不是,當你使用的系統時windows並且安裝了OpenSSL,就會調用openssl_random_pseudo_bytes函數生成,如果你未安裝OpenSSL,就會使用mcrypt_create_iv生成。
如果你使用的系統不是windows,就需要呼叫/dev/urandom,FreeBSD系統特殊,會呼叫/dev/random,然後呼叫stream_set_read_buffer方法產生8位元組的字元文件,產生後,透過fread函數讀取該檔案中的32個字節,然後傳回該資料。
password_reset_token在使用者註冊的時候是為空的,當使用者忘記密碼在登入頁面點擊reset it 後產生的,用來給用法發送郵件後重設密碼時進行驗證。
status 在common/models/User中定義的
const STATUS_DELETED = 0; const STATUS_ACTIVE = 10;
使用者註冊時rules中的status預設為10,
created_time和updated_time也是在common/models/ User中的behaviors()函數中產生
使用者的資料驗證合格,加上框架產生的數據,然後儲存進資料的user表裡。
推薦學習:yii框架
以上是yii怎麼搞註冊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著雲端運算技術的不斷發展,資料的備份已經成為了每個企業必須要做的事情。在這樣的背景下,開發一款高可用的雲端備份系統尤其重要。而PHP框架Yii是一款功能強大的框架,可以幫助開發者快速建立高效能的Web應用程式。以下將介紹如何使用Yii框架開發一款高可用的雲端備份系統。設計資料庫模型在Yii框架中,資料庫模型是非常重要的一環。因為資料備份系統需要用到很多的表和關

隨著互聯網的不斷發展,Web應用程式開發的需求也越來越高。對於開發人員而言,開發應用程式需要一個穩定、高效、強大的框架,這樣可以提高開發效率。 Yii是一款領先的高效能PHP框架,它提供了豐富的特性和良好的性能。 Yii3是Yii框架的下一代版本,它在Yii2的基礎上進一步優化了效能和程式碼品質。在這篇文章中,我們將介紹如何使用Yii3框架來開發PHP應用程式。

隨著Web應用需求的不斷增長,開發者在選擇開發框架方面也越來越有選擇的空間。 Symfony和Yii2是兩個備受歡迎的PHP框架,它們都具有強大的功能和效能,但在面對需要開發大型網路應用程式時,哪個框架更適合呢?接下來我們將對Symphony和Yii2進行比較分析,以幫助你更好地進行選擇。基本概述Symphony是一個由PHP編寫的開源Web應用框架,它是建立

在當前資訊時代,大數據、人工智慧、雲端運算等技術已成為了各大企業關注的熱點。在這些技術中,顯示卡渲染技術作為一種高效能圖形處理技術,受到了越來越多的關注。顯示卡渲染技術廣泛應用於遊戲開發、影視特效、工程建模等領域。而對於開發者來說,選擇一個適合自己專案的框架,是一個非常重要的決策。在目前的語言中,PHP是一種相當有活力的語言,一些優秀的PHP框架如Yii2、Ph

Yii框架是一個開源的PHPWeb應用程式框架,提供了眾多的工具和元件,簡化了Web應用程式開發的流程,其中資料查詢是其中一個重要的元件之一。在Yii框架中,我們可以使用類似SQL的語法來存取資料庫,從而有效率地查詢和操作資料。 Yii框架的查詢建構器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

如果您問「Yii是什麼?」請參閱我之前的教學:Yii框架簡介,其中回顧了Yii的優點,並概述了2014年10月發布的Yii2.0的新增功能。嗯>在這個使用Yii2程式設計系列中,我將指導讀者使用Yii2PHP框架。在今天的教學中,我將與您分享如何利用Yii的控制台功能來執行cron作業。過去,我在cron作業中使用了wget—可透過Web存取的URL來執行我的後台任務。這引發了安全性問題並存在一些效能問題。雖然我在我們的啟動系列安全性專題中討論了一些減輕風險的方法,但我曾希望過渡到控制台驅動的命令

隨著網路的快速發展,API成為了各種應用間資料交換的重要方式。因此,開發一款易於維護、高效、穩定的API框架變得越來越重要。而在選擇API框架時,Yii2和Symfony是兩個備受開發者歡迎的選擇。那麼,哪一個比較適合API開發呢?本文將對這兩個框架進行比較,並給出一些結論。一、基本介紹Yii2和Symfony都是成熟的PHP框架,都有相應的擴展,可以用來開

yii框架:本文為大家介紹了yii將物件轉換為陣列或直接輸出為json格式的方法,具有一定的參考價值,希望能幫助大家。
