Форум программистов, компьютерный форум, киберфорум
Наши страницы
Yii, Yii2
Войти
Регистрация
Восстановить пароль
 
TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,031
#1

Как правильно прописать код для Восстановления пароля - Yii/Yii2

11.10.2017, 22:08. Просмотров 132. Ответов 1
Метки php, yii2 (Все метки)

Задача --сделать восстановление пароля.

Но для начала я хотел бы просто найти есть ли Имейл который вводит пользователь в форме восстановления пароля.


Модель формы восстановления--ForgotForm.php


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
 
namespace app\models;
 
use Yii;
use yii\base\Model;
 
/**
 * LoginForm is the model behind the login form.
 *
 * @property User|null $user This property is read-only.
 *
 */
class ForgotForm extends Model
{
    public $email;
 
 
    private $_user = false;
 
 
 
 
    public function attributeLabels(){
 
        return[
 
            'email'=>'Почта',
 
        ];
 
 
    }
 
 
 
 
 
 
    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
 
            ['email','required'],
 
 
        ];
    }
 
 
 
    /**
     * Finds user by [[username]]
     *
     * @return User|null
     */
    public function getUser()
    {
 
            $this->_user = User::findByEmail($this->email);
 
 
        return $this->_user;
    }
}





Cоздал вид(форма восстановления) -- forgot.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
 
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model app\models\LoginForm */
 
 
 
 
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
 
$this->title = 'Forgot';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-login">
    <h1><?= Html::encode($this->title) ?></h1>
 
    <p>Заполните пожалуйста поля в форме:</p>
 
    
 
</div>
 
<?php $form = ActiveForm::begin([
    'id' => 'login-form',
    'layout' => 'horizontal',
    'fieldConfig' => [
        'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",
        'labelOptions' => ['class' => 'col-lg-1 control-label'],
    ],
]); ?>
 
<?= $form->field($modelf, 'email')->textInput(['autofocus' => true]) ?>
 
 
<div class="form-group">
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('Ввести имейл', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
    </div>
</div>
 
<?php ActiveForm::end(); ?>
 
<?php
 
if ($modelf->getUser()){echo'Есть';}{echo'Heту';}
 
 
 
 
 
?>







в методе getUser() обращение к методу findByEmail() который находиться в модели User
$this->_user = User::findByEmail($this->email);


вот он
PHP
1
2
3
4
5
6
7
8
9
  
 
 public static function findByEmail($email)
    {
        return static::findOne(['email'=>$email]);
 
 
 
    }





Контроллер--ForgotController.php




PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 
namespace app\controllers;
 
 
use yii\web\Controller;
use app\models\User;
use app\models\ForgotForm;
 
 
 
 
class ForgotController extends Controller
{
 
 
 
    public function  actionForgot(){
 
 
        $modelf = new ForgotForm();
 
 
 
    
 
        return $this->render('forgot',compact('modelf'));
 
 
 
 
 
 
    }
 
 
 
 
 
}


В результате после ввода существующего имейла в форму и отправки форма.И даже если ввести любую комбинацию букв,то

у меня выскакивает текст Нету

if ($modelf->getUser()){echo'Есть';}{echo'Heту';}


также ПХПШторм указывает что модель ForgotForm неопределена,хотя неймспейс я указал(скриншоты прикрепляю)

==============

Мне просто же нужно чтоб если есть соотвествующий имейл в Бд то появлялось слово Есть, если нет то Нету
0
Миниатюры
Как правильно прописать код для Восстановления пароля   Как правильно прописать код для Восстановления пароля  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2017, 22:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как правильно прописать код для Восстановления пароля (Yii/Yii2):

Как прописать код чтоб екшен срабатывал если в куки записано значение 12
Как прописать код чтоб екшен срабатывал если в куки записано значение 12? ...

Подскажите как правильно прописать код
Всем привет. Мучаюсь, не знаю как правильно прописать, чтобы корректно все...

Как правильно прописать в alert php код
Всем привет! Возможно ли в alert прописать php код? А то появление...

Как правильно прописать данный код программы?
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt;...

Как прописать код, что бы код для социальных кнопок?
Всем привет! Редактирую файл footer.php шаблона для WP. Не могу понять как...

Как правильно прописать команду для компелирования
Здравствуйте! Я создал Файл hello.java. Как мне его скомпилировать? И кроме...

1
TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,031
14.10.2017, 17:49  [ТС] #2
Проблема решена

в контроллере ForgotForm прописал

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  $mform=$_GET['ForgotForm'];
 
        $poisk=User::find()->where(['email' => $mform])->one();
 
if($poisk) {
 
 
    // Если юзер с такой почтой есть то отправляем ему письмо на почту и выводим страницу об отправке
    // письма
    //Отправка письма что успешно зарегистрировался пользователь
 
    $to      = $mform['email'];
    $subject = 'Письмо для восстановления пароля ';
    $message = "Ваш пароль";
 
                             
 
 
 
    $headers = 'From: http://www.tvpnero.ho.ua' . "\r\n" .
        'Reply-To: webmaster@example.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
 
    mail($to, $subject, $message, $headers );
 
 
 
 
 
    return $this->render('remind', compact('poisk'));
 
 
}else{
 
    // Если юзер не обнаружен то отправляем на страницу-такой юзер не найден
 
    return $this->render('notfound');
}
 
 
 
    }
Добавлено через 58 секунд
осталось придумать генерацию уникальной ссылки для восстановления пароля?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2017, 17:49
Привет! Вот еще темы с решениями:

Как правильно прописать редирект доменов для .htaccess
у меня есть два домена domen.ru и new.ru мне нужно сделать так чтобы все...

Как подключаться к различным типам БД (как правильно прописать драйвер для БД)?
Задача научить подключаться различным типам БД и в каких случих пишут имя...

Как правильно прописать путь для запуска с командной строки?
Не получается запустить программу с командной строки . Прога лежит в...

Как правильно прописать media screen только для декстопов?
Прописал: @media only screen and (min-device-width: 960px){ .block-border{...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru