忘记密码自定义忘记yii中的密码
我对YII框架非常陌生。我想在登录表单中添加“忘记密码”。当用户点击它时,系统将从数据库中获取该用户的电子邮件地址,并通过电子邮件向该用户发送新密码。我不想为此使用任何插件 这是我的链接代码:-忘记密码自定义忘记yii中的密码,yii,Yii,我对YII框架非常陌生。我想在登录表单中添加“忘记密码”。当用户点击它时,系统将从数据库中获取该用户的电子邮件地址,并通过电子邮件向该用户发送新密码。我不想为此使用任何插件 这是我的链接代码:- <?php echo CHtml::Link(Yii::t('job','Forgot Password ?'), $this->createUrl('site/forgotpassword'),
<?php echo CHtml::Link(Yii::t('job','Forgot Password ?'),
$this->createUrl('site/forgotpassword'),
array(
'onclick'=>'$("#jobDialog").dialog("open"); return false;',
'update'=>'#jobDialog'
),
array('id'=>'showJobDialog'));?>
<div id="jobDialog"></div>
这是我的createdialog.php:-
<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog',array(
'id'=>'jobDialog',
'options'=>array(
'title'=>Yii::t('job','Fogot Password ?'),
'autoOpen'=>true,
'modal'=>'true',
'width'=>'auto',
'height'=>'auto',
),
));
echo $this->renderPartial('_formDialog', array('model'=>$model)); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog');?>
这是my_formDialog.php
<div class="form" id="jobDialogForm">
<style type="text/css">
.forgot_password{
background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #DDDDDD;
border-radius: 3px;
font-family: Tahoma,Arial,Helvetica,sans-serif;
font-size: 11px;
padding: 5px 3px;
width:70%;
}
label{
color: #575757;
display: block;
font-size: 12px;
font-weight: bold;
margin: 0 0 5px;
padding: 0 0 0 3px;
}
</style>
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'job-form',
'enableAjaxValidation'=>true,
));
//I have enableAjaxValidation set to true so i can validate on the fly the
?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<!---flash message start------>
<?php if(Yii::app()->user->hasFlash('error')):?>
<div class="alert alert-error">
<?php echo Yii::app()->user->getFlash('error'); ?>
</div>
<?php endif; ?>
<!----flash message end----->
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>180,'class'=>'forgot_password')); ?>
<?php echo $form->error($model,'email'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::ajaxSubmitButton(Yii::t('job','Submit'),CHtml::normalizeUrl(array('site/forgotpassword1','render'=>false)),array('success'=>'js: function(data) {
$("#jobDialog").dialog("close");
}'),array('id'=>'closeJobDialog','onclick'=>'return forgotpassword()')); ?>
</div>
<?php $this->endWidget(); ?>
</div>
<script type="text/javascript">
function forgotpassword()
{
var email = $("#User_email").val();
if(email=='')
{
$("#errorEmail").remove();
$('#User_email').after('<div class="errorMessage" id="errorEmail">Email should not be blank.</div>');
return false;
}
else
{
$("#errorEmail").remove();
}
}
</script>
.忘记密码{
背景:无重复滚动0 0#FFFFFF;
边框:1px实心#DDDDDD;
边界半径:3px;
字体系列:塔荷马字体、Arial字体、Helvetica字体、无衬线字体;
字体大小:11px;
填充物:5px 3px;
宽度:70%;
}
标签{
颜色:#575757;
显示:块;
字体大小:12px;
字体大小:粗体;
利润率:0.05倍;
填充:0 3px;
}
带*的字段是必需的
把这个放进你的控制器里
private function randomPassword() {
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$pass = array(); //remember to declare $pass as an array
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass); //turn the array into a string
}
public function actionForgotPassword($email) {
$user = User::model()->findAll('email=:email',
array('email'=>$email);
if(count($user) != 1) {
Yii::app()->user->setFlash('user',
Yii::t('messages', 'Unable to find user.'));
);
$this->refresh();
}
else {
$user = $user[0];
$user->password = $this->randomPassword();
$user->update();
// Send new password to email
$from = 'Password Reset <admin@yoursite.com>';
$to = $user->email;
$name = $user->firstname.' '.$user->lastname;
$subject = 'Reset Password';
$message = Yii::t('user', 'Dear').' '.$user->username.',
'.Yii::t('user', 'A request has been made to reset your password.').'
'.Yii::t('user', 'Your new password is').': '.$user->password.'
'; // Our message above
$headers = 'From: '.$from."\r\n"; // Set from headers
mail($to, $subject, $message, $headers); // Send our email
Yii::app()->user->setFlash('user',
Yii::t('notices', 'A new password has been sent to your email address.')
);
$this->refresh();
}
$this->layout = '//layouts/main';
$this->render('resetpassword');
}
private函数randomPassword(){
$alphabet=“abcdefghijklmnopqrstuwxyzabcdefghijklmnopqrstuwxyzo123456789”;
$pass=array();//记住将$pass声明为数组
$alphaLength=strlen($alphabet)-1;//将长度-1放入缓存
对于($i=0;$i<8;$i++){
$n=兰特(0,$alphaLength);
$pass[]=$alphabet[$n];
}
return introde($pass);//将数组转换为字符串
}
公共函数actionForgotPassword($email){
$user=user::model()->findAll('email=:email',
数组('email'=>$email);
如果(计数($user)!=1){
Yii::app()->user->setFlash('user',
Yii::t('消息','找不到用户');
);
$this->refresh();
}
否则{
$user=$user[0];
$user->password=$this->randomPassword();
$user->update();
//将新密码发送到电子邮件
$from='密码重置';
$to=$user->email;
$name=$user->firstname.'.$user->lastname;
$subject='Reset Password';
$message=Yii::t('user','Dear')。$user->username',
'.Yii::t('user','已请求重置您的密码。')。'
'.Yii::t('user',您的新密码是'):'.$user->password'
“;//我们上面的信息
$headers='From:'.$From.\r\n“;//从标头设置
邮件($to,$subject,$message,$headers);//发送我们的电子邮件
Yii::app()->user->setFlash('user',
Yii::t('通知','新密码已发送到您的电子邮件地址')
);
$this->refresh();
}
$this->layout='//layouts/main';
$this->render('resetpassword');
}
还添加一个视图“resetpassword.php”:
你想过怎么做吗?是的@doniyor plz help mehello@samuel liew,我为忘记密码创建了一个链接?如果我点击该按钮,则会弹出一个带有电子邮件和提交按钮的弹出窗口。请尽快向我显示忘记密码链接
private function randomPassword() {
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$pass = array(); //remember to declare $pass as an array
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass); //turn the array into a string
}
public function actionForgotPassword($email) {
$user = User::model()->findAll('email=:email',
array('email'=>$email);
if(count($user) != 1) {
Yii::app()->user->setFlash('user',
Yii::t('messages', 'Unable to find user.'));
);
$this->refresh();
}
else {
$user = $user[0];
$user->password = $this->randomPassword();
$user->update();
// Send new password to email
$from = 'Password Reset <admin@yoursite.com>';
$to = $user->email;
$name = $user->firstname.' '.$user->lastname;
$subject = 'Reset Password';
$message = Yii::t('user', 'Dear').' '.$user->username.',
'.Yii::t('user', 'A request has been made to reset your password.').'
'.Yii::t('user', 'Your new password is').': '.$user->password.'
'; // Our message above
$headers = 'From: '.$from."\r\n"; // Set from headers
mail($to, $subject, $message, $headers); // Send our email
Yii::app()->user->setFlash('user',
Yii::t('notices', 'A new password has been sent to your email address.')
);
$this->refresh();
}
$this->layout = '//layouts/main';
$this->render('resetpassword');
}
<div class="flash-success">
<?= Yii::app()->user->getFlash('user') ?>
</div>