Php 密码加密
我无法理解为什么这不起作用。这个代码snippt在我的Php 密码加密,php,yii,Php,Yii,我无法理解为什么这不起作用。这个代码snippt在我的userscoontroller.php中,它需要在其他地方吗 public function actionCreate() { $model=new Users; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if(isset($_POST['
userscoontroller.php
中,它需要在其他地方吗
public function actionCreate()
{
$model=new Users;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Users']))
{
$model->attributes=$_POST['Users'];
$model->password = crypt_SHA_512($model->password,'salt');
if($model->save())
$this->redirect(array('view','id'=>$model->users_id));
}
$this->render('create',array(
'model'=>$model,
));
}
通过以下方式生成salt并对密码进行编码:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
$model->password = crypt($passwordInput, '$6$'.$salt);// '$6$' for SHA_512
$model->password = CPasswordHelper::hashPassword($password);
请确认:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
if (CPasswordHelper::verifyPassword($password, $hash))
// password is good
else
// password is bad
或者:
你可以用
通过以下方式散列您的密码:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
$model->password = crypt($passwordInput, '$6$'.$salt);// '$6$' for SHA_512
$model->password = CPasswordHelper::hashPassword($password);
请确认:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
if (CPasswordHelper::verifyPassword($password, $hash))
// password is good
else
// password is bad
你犯了一个错误,没有处理错误,这就是为什么你不能理解为什么这不起作用 使用此片段了解原因
if($model->save())
$this->redirect(array('view','id'=>$model->users_id));
else
print_r($model->getErrors());
正确的方法是在保存之前调用model validate()函数,并在视图中显示错误
if ($model->validate()) {
if ($model->save()) {
$this->redirect(array('view','id'=>$model->users_id));
}
}
$this->render('create',array(
'model'=>$model
));
在你看来:
<?php
$form=$this->beginWidget('CActiveForm' ...);
?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username'); ?>
<?php echo $form->error($model,'username'); ?>
</div>
一切看起来都很好。什么不起作用?加密?抱歉耽搁了。密码没有被加密不,你好,我刚刚通过删除“=号”周围的空格对密码进行了加密,但是我无法将其发送到sha512。我可以把这个$model->PassWord=crypt($model->PassWord,$6$,'salt')我刚刚尝试了你的方法,得到了未定义的变量:PassWordInput(P和W是大写的)