我在我的模型里设置了字段数据完成
//tp5框架实现数据库字段的自动填充
class User extends Model{
//实现tp5下的软删除
use SoftDelete;
protected static $deleteTime = 'delete_time';
//tp5框架实现数据库字段的自动填充
protected $auto = ['ip','password','repassword'];
protected function setIpAttr(){
return request()->ip();
}
protected function setPasswordAttr($valie){
return Md5($valie);
}
protected function setRepasswordAttr($valie){
return md5($valie);
}
控制器部分设置了插入数据功能
public function insert(){
$data = Input('post.');
$user = new UserModel($data);
$ret=$user->allowField(true)->save();
dump($user);exit;
dump($user)得到是数据
["data":protected] => array(9) {
["name"] => string(6) "白痴"
["password"] => string(32) "96e79218965eb72c92a549dd5a330112"
["repassword"] => string(32) "96e79218965eb72c92a549dd5a330112"
["email"] => string(11) "1232@qq.com"
["submit"] => string(6) "提交"
["ip"] => string(7) "0.0.0.0"
["create_time"] => string(19) "2019-03-29 16:14:52"
["update_time"] => string(19) "2019-03-29 16:14:52"
["id"] => string(2) "13"
}
我设置密码为111111
成功转换为MD5密文 96e79218965eb72c92a549dd5a330112
之后再控制器里设置了数据更新的功能
$data = input('post.');
$id =input('post.id');
dump($data);
$user1 = new UserModel();
$ret=$user1->allowField(true)->save($data,['id'=>$data['id']]);
dump($user1);exit;
dump($data)结果为
array(6) {
["id"] => string(2) "13"
["name"] => string(6) "白痴"
["password"] => string(6) "111111"
["repassword"] => string(6) "111111"
["email"] => string(11) "1232@qq.com"
["submit"] => string(6) "提交"
}
结果正确密码还是修改成111111
dump($user)结果为
["data":protected] => array(8) {
["id"] => string(2) "13"
["name"] => string(6) "白痴"
["password"] => string(32) "9db06bcff9248837f86d1a6bcf41c9e7"
["repassword"] => string(32) "9db06bcff9248837f86d1a6bcf41c9e7"
["email"] => string(11) "1232@qq.com"
["submit"] => string(6) "提交"
["ip"] => string(7) "0.0.0.0"
["update_time"] => string(19) "2019-03-29 16:20:31"
}
更新到数据库模型对象里面的password的md5的密文却变成了
"9db06bcff9248837f86d1a6bcf41c9e7"
经过查询这段密文是密码111111的MD5二次加密的密文
即MD5(MD5("111111"))
请问为什么会这样?我插入数据时就是正常的,更新数据之后就会二次加密,而且我传入的密码就是111111没有错误。
求助php5.0的各位高手给予解答,谢谢了
最佳答案