旗下导航:搜·么
当前位置:网站首页 > PHP框架 > YII > 正文

yii怎么搞注册【yii框架教程】,yii

作者:搜搜PHP网发布时间:2019-12-16分类:YII浏览:55


导读:注册在advanced模板中,进入frontend/index.php?r=site%2Fsignup页面,能够看到框架的注册页面填写完Username、Ema...

注册

在advanced模板中,进入frontend/index.php?r=site%2Fsignup页面,能够看到框架的注册页面

填写完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怎么搞注册的细致内容,更多请关注ki4网别的相干文章!

标签:yii