成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

介紹thinkphp5.0修改器和數據完成的關系及使用方法

下面由thinkphp教程欄目給大家介紹thinkphp5.0修改器和數據完成的關系及使用方法,希望對需要的朋友有所幫助!

thinkphp5.0修改器和數據完成的關系以及使用方法

密碼加密時遇到的問題

今天遇到密碼md5加密的問題,當時使用的是 "thinkphp5.0.9->模型->數據完成" 實現的自動進行加密,但是在上面 "thinkphp5.0.9->模型->修改器" 中發現修改器和數據完成功能一樣,看下方的評論說是數據完成和修改器配合使用,我就照著做,當時這樣寫的:

//模型層  class User extends Model{ //$auto包含新增$insert和更新操作$update,就是不管新增還是更新我就自動執行     protected $auto = ['password','create'];     public function setPasswordAttr($value)     {         return md5($value);     }     public function setCreateAttr()     {         return time();     }      //注冊用戶     public function register($data){             $bool = $this->save($data);             return $bool ? $this->id : 0;     }  }  //控制器層方法 public function register()     {         if(request()->isAjax()){             $userModel=new appindexModelUser();             $data=input('post.'); //注冊             $res = $userModel->register($data);            echo $res;         }else{             $this->error('非法訪問');         }     }

介紹thinkphp5.0修改器和數據完成的關系及使用方法

我輸入 "wwwwww" 按照上面的代碼進行注冊后password加密結果是b8d3c8f4db0c248ac242dd6e098bbf85

正確的加密結果是 d785c99d298a4e9e6e13fe99e602ef42,這個時候你可能沒發現,當你登陸的時候就是登陸不上去,你肯定再去注冊一個新用戶,比如密碼還是wwwwww,你登陸的時候還是登陸不上去,只能懷疑加密出錯,再往上找到了 "數據完成的setPasswordAttr()"

單獨拿出來測試

直接說答案吧,我當時看了多遍修改器和數據完成測試兩個小時終于知道原因了,新建的test表

介紹thinkphp5.0修改器和數據完成的關系及使用方法

//新建test模型層 namespace appindexModel; use thinkModel; class Test extends Model {     protected $auto = ['password'];     protected function setPasswordAttr($value)     {         dump(md5(NULL));         dump($value);         dump(md5($value));         return md5($value);      }     public function addPass(){         echo "修改器";         $this->password='wwwwww';         dump($this->password);                  echo "數據完成";         $this->save([             'username'  => 'thinkphp',             'password'  => 'wwwwww',             'create'    => '123456'         ]);     } }  //控制器中添加test方法  public function test(){         $user = model('Test');         //調用model層函數         $user->addPass();     }

單獨測試修改器

首先注釋掉模型層中的 “數據完成” 部分

namespace appindexModel; use thinkModel; class Test extends Model {     protected $auto = ['password'];     protected function setPasswordAttr($value)     {         dump(md5(NULL));//把NULL加密         dump($value);   //查看調用時傳遞過來的值         dump(md5($value));//把該值加密         return md5($value);//把該值加密返回      }     public function addPass(){         echo "修改器:修改器的作用是可以在數據賦值的時候自動進行轉換處理";         $this->password='wwwwww';         dump($this->password);//輸出返回后的結果  //        echo "數據完成:在數據字段insert,update,auto時進行處理"; //        $this->save([ //            'username'  => 'thinkphp', //            'password'  => 'wwwwww', //            'create'    => '123456' //        ]);     } }

執行后頁面顯示結果,通過結果發現修改器是在賦值的時候執行的自動加密,注意:此時并沒有存入數據庫!

修改器:修改器的作用是可以在數據賦值的時候自動進行轉換處理  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密的NULL】  string(6) "wwwwww"【傳過來的$value】  string(32) "d785c99d298a4e9e6e13fe99e602ef42"【加密$value】  string(32) "d785c99d298a4e9e6e13fe99e602ef42"【return返回的結果】

測試數據完成

注釋掉“修改器”部分的代碼,僅執行數據完成

namespace appindexModel; use thinkModel; class Test extends Model {     protected $auto = ['password'];     protected function setPasswordAttr($value)     {         dump(md5(NULL));//把NULL加密         dump($value);   //查看調用時傳遞過來的值         dump(md5($value));//把該值加密         return md5($value);//把該值加密返回      }     public function addPass(){ //        echo "修改器:修改器的作用是可以在數據賦值的時候自動進行轉換處理"; //        $this->password='wwwwww'; //        dump($this->password);//輸出返回后的結果          echo "數據完成:在數據字段insert,update,auto時進行處理";         $this->save([             'username'  => 'thinkphp',             'password'  => 'wwwwww',             'create'    => '123456'         ]);     } }

找到原因

執行后發現setPasswordAttr()被執行了兩次,所以password也被加密了兩次;

數據完成:在數據字段insert,update,auto時進行處理  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密NULL】  string(6) "wwwwww"【傳入的$value】  string(32) "d785c99d298a4e9e6e13fe99e602ef42"【加密$value="wwwwww"】  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密NULL】  string(32) "d785c99d298a4e9e6e13fe99e602ef42"【傳入的$value】  string(32) "b8d3c8f4db0c248ac242dd6e098bbf85"【再次加密$value="d785c99...f42"】

加密兩次的原因是在賦值的時候加密一次,自動完成$auto時加密了一次

[     'username'  => 'thinkphp',     'password'  => 'wwwwww',     'create'    => '123456' ]

解決開始的問題

如果想要加密一次就把 protected $auto = ['password']; 注釋掉,或者在登陸的代碼中進行md5(md5("wwwwww")),注釋掉后執行:

數據完成:在數據字段insert,update,auto時進行處理  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密NULL】  string(6) "wwwwww"【$value】  string(32) "d785c99d298a4e9e6e13fe99e602ef42"【加密結果】

介紹thinkphp5.0修改器和數據完成的關系及使用方法

如果是多個字段protected $auto = ['password','create'];就把password去掉就可以了protected $auto = ['create'];,所以最開始的問題就解決了。

當只有數據完成但不賦值

在上面可能注意到我怎么老是加密 NULL 干什么,還有另一種情況就是 protected $auto = ['password']; 定義了自動完成,但是我并沒有賦值:

namespace appindexModel; use thinkModel; class Test extends Model {     protected $auto = ['password'];     protected function setPasswordAttr($value)     {         dump(md5(NULL));//把NULL加密         dump($value);   //查看調用時傳遞過來的值         dump(md5($value));//把該值加密         return md5($value);//把該值加密返回      }     public function addPass(){ //        echo "修改器:修改器的作用是可以在數據賦值的時候自動進行轉換處理"; //        $this->password='wwwwww'; //        dump($this->password);//輸出返回后的結果          echo "數據完成:在數據字段insert,update,auto時進行處理";         $this->save([             'username'  => 'thinkphp', //注釋掉,不賦值  //           'password'  => 'wwwwww',             'create'    => '123456'         ]);     } }

執行后,加密的是 NULL

數據完成:在數據字段insert,update,auto時進行處理  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密NULL】  NULL【沒有傳值,$value=NULL】  string(32) "d41d8cd98f00b204e9800998ecf8427e"【加密$value,剛好等于NULL加密結果】

介紹thinkphp5.0修改器和數據完成的關系及使用方法

剩下的$update和$insert使用方法同$auto一樣,$auto包含$update和$insert

總結

修改器會在賦值時執行;數據完成會被執行兩次,一次是賦值時,一次是寫入數據時

希望手冊能稍微詳細一點點,白白耽誤我開發時間,特此分享,大家少踩坑,如果理解的不對請指正,謝謝

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
日本少妇人妻XXXXX18免费| 老头猛挺进小雯的体内视频| 亚洲精品无码日韩国产不卡Av | 亚洲日韩精品欧美一区二区| 三妻四妾免费观看完整版高清| 免费观看高清日本AⅤ| 黑人入室粗暴人妻中出| 大肥女BBWBBWHD视频| 91人妻人人爽人人澡人人精品| 亚洲国产丝袜精品一区| 无遮挡粉嫩小泬久久久久久久 | 草草浮力院禁止18进入| 在线精品一区二区三区| 亚洲成AV人在线观看网站| 无码人妻精品一区二区三区蜜桃 | 亚精区在二线三线区别99| 甜性涩爱在线播放| 日韩国产女人久久久| 人妻久久久精品99系列A片| 么公的粗大挺进了我的密道| 久久天天躁夜夜躁狠狠2018| 久久97精品久久久久久久不卡 | 午夜.DJ高清在线观看免费8| 亚洲欧美精品午睡沙发| 亚洲AV色一区二区三区蜜桃| 无码一区二区波多野结衣播放搜索| 特级AAAAAAAAA毛片免费| 少妇内射兰兰久久| 少妇搡BBBB搡BBB搡| 色噜噜综合亚洲AV中文无码| 日韩欧国产精品一区综合无码 | 免费人成在线观看网站| 精品无码无人网站免费视频| 国内精品乱码卡一卡2卡三卡新区 国内精品乱码卡一卡2卡三卡 | А√在线天堂官网| GOGO全球大胆高清人体131| 97久久人人超碰超碰窝窝| 公交车后车座的疯狂的做小| 高清性色生活片97| 精品成品国色天香卡一卡三 | 亚洲AV中文无码乱人伦在线R▽| 午夜熟女插插XX免费视频| 无码一区在线视频| 在办公室里揉弄小雪好爽| 丰满少妇人妻HD高清果冻传媒| 东京热人妻中文无码AV| 国产H视频在线观看| 国产精品无码A∨麻豆| 国产日产欧产精品精品软件| 国产又爽又黄又刺激的视频| 久99久热爱视频精品免费37| 人妻中文字幕在线| 少妇高潮喷水久久久久久久久久| 亚洲人成在线观看无码| 成码无人AV片在线电影网站| 精品人亚洲成A人片在线观看无码专区| 人妻激情偷乱视频一区二区三区 | 中国少妇内射XXXXX-百度| 亚洲国产精品第一区二区| 亚洲无线码高清在线观看| 一个吃我奶头两个舔我下面| 最新国产精品久久精品| YY111111少妇无码影院| 国产999精品久久久久久| 国产日产精品久久久久快鸭| 男女啪啪激烈高潮喷出GIF免费| 人妻 丝袜美腿 中文字幕| 少妇高潮潮喷到猛进猛出小说| 亚洲综合大片6999| AV大片在线无码免费| 大又大又粗又硬又爽少妇毛片| 久久久精品波多野结衣| 牛牛影视亚洲AV成人片| 色欲色香天天天综合WWW| 亚洲成AV人在线观看成年美女| 扒开腿挺进湿润的花苞| 国产精品久久久久久无遮挡| 久久久久99精品国产片| 欧美熟妇搡BBBB搡BBBB| 完全着衣の爆乳お姉さんが| 99久久久无码国产精品秋霞网| 国产成年无码久久久久下载| 精品乱人伦一区二区三区| 欧美精品久久久久久精品爆乳 | 亚洲AV日韩AⅤ无码色老头| 成本人无码H无码动漫在线网站| 美女直播全婐网站免费高清| 日韩AV无码午夜免费福利制服 | 久久中文字幕人妻丝袜系列| 人妻丰满AV中文久久不卡| 野花香在线观看免费观看大全动漫 | 国产精品Ⅴ无码大片在线看| 精品亚洲AⅤ无码一区二区三区| 四虎永久在线精品免费一区二区| CHINESE中年熟妇FREE| 国产精品xxxxav| 秋霞午夜无码鲁丝片午夜| 又硬又粗又大一区二区三区视频| 抽插丰满内射高潮视频| 精产国品一二三产品区别视频 | Y11111少妇无码电影| 浪潮AV激情高潮国产精品没电了| 日韩无码2021| FREE性欧美╳╳╳HD| 老乞丐没完没了73节| 亚洲欲色欲WWW怡红院| 护士人妻HD中文字幕| 人喾交性专区免费看| 18未满禁止免费69影院| 国产午夜免费啪视频观看视频 | 日韩AV无码一区二区三区不卡| 69SEX久久精品国产麻豆| 国产狂喷水潮免费网站WWW| 妺妺窝人体色WWW聚色窝丿| 亚洲伊人五月丁香激情| 精品乱码一区二区三区四区| 亚洲AV永久无码精品主页丝瓜| 国产偷国产偷亚洲高清日韩| 欧美黑人粗暴多交高潮水最多| 中国BGMBGMBGM老妇和青年交| 久久亚洲精品国产精品| 亚洲综合精品香蕉久久网| 大乳BOOBS巨大吃奶| 日本熟妇人妻XXXXX中文| GOGO全球高清大尺度视频| 欧美精品九九99久久在免费线| 99久久免费只有精品国产| 欧美成人一区在线| 亚洲鲁丝片AV无码多人| 俄罗斯性孕妇孕交| 色综合久久成人综合网五月| 村长趴在小雪身上耕耘视频| 色噜噜狠狠一区二区三区| 丰满少妇人妻无码| 天天摸夜夜添添到高潮水汪汪| AV无码人妻一区二区三区在线 | 久久精品人妻一区二区三区av| 亚洲欧美在线一区中文字幕| 久久久97精品国产一区蜜桃 | 男生坤坤放在女生坤坤叫什么| 亚洲一区二区三区无码中文字幕 | 蜜国产精品JK白丝AV网站| 中文字幕被公侵犯的漂亮人妻| 波多野结衣好大好紧好爽 | 国产精华最好的产品人V中文| 欧美日日日日BBBBB视频| YSL千人千色8610| 日韩精品久久久久久久电影蜜臀| 风流老熟女一区二区三区| 天天做日日做天天添天天欢公交车| 国产精品久久久久免费A∨| 亚洲AV成人片无码网站网一区| 村长用力挺进她的花苞啥电视| 视频一区二区三区在线| 国产欧美日韩精品丝袜高跟鞋| 亚洲国产精品无码一线岛国 | 韩国青草无码自慰直播专区| 少妇高潮喷水久久久影院| 国产成人无码AⅤ| 日本理伦片午夜理伦片| 24种男女插秧法| 人妻AV无码一区二区三区| 高潮久久久久久久久不卡| 无遮挡无码H纯肉动漫在线观看| 精品国产亚洲一区二区三区| 在线看AV片的网站| 人妻无码AⅤ中文系列久久免费| 国产边做边吃奶AⅤ视频免费| 亚洲AV永久无码精品网址| 国产麻豆剧果冻传媒星空视频| 少妇极品熟妇人妻无码| 国产一区二区波多野结衣| 亚洲综合色婷婷在线观看| 欧美乱码卡1卡2卡三卡四卡| 97久久国产露脸精品国产| 日韩成人精品久久网站| 国产午夜无码视频在线观看| 野花韩国在线观看免费版5| 欧美最猛黑人AAAAAXXX片| Chinese老女人老熟妇HD| 少妇婬荡久久久久AV无码| 狠狠五月激情六月丁香| 337P粉嫩大胆噜噜噜| 色在线 | 国产| 精品人妻一区二区三区| BGMBGMBGM老太太俄罗斯| 无码人妻视频一区二区三区| 久久亚洲人成网站| 成人女人A级毛片免费软件| 日本成AⅤ人片日本伦| YELLOW在线资源免费观看| 视频无码一区二区| 久久精品A一国产成人免费网站| 亚洲欧美日韩国产手机在线 | AV 无码 在线 观看| 无码人妻丰满熟妇一区二区三区| 久拍国产在线观看| 国产成人精品无码A区在线观看| 亚洲综合成人AⅤ在线观看| 色欲av无码爆乳亚洲区一二|