Много читал на форуме, но без результата..
Каптча при регистрации все время пишет ошибку... ($_POST['verifyCode']) !=(__captcha);
Подскажите где ошибка
Код: Выделить всё
<?php
namespace mdm\admin\models\form;
use Yii;
use mdm\admin\models\User;
use yii\base\Model;
/**
* Signup form
*/
class Signup extends Model
{
public $username;
public $email;
public $password;
public $password_repeat;
public $question;
public $answer;
public $verifyCode;
public $hash;
public $active;
public $access;
/**
* @inheritdoc
*/
public function attributeLabels() {
return [
'username' => 'Логин *',
'email' => 'Email *',
'password' => 'Введите пароль *',
'password_repeat' => 'Введите пароль еще раз *',
'question' => 'Секретный вопрос *',
'answer' => 'Ответ на вопрос *',
'verifyCode'=>'Введите буквы с картинки *',
];
}
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'unique', 'targetClass' => 'mdm\admin\models\User', 'message' => 'Данный логин уже используется.'],
['username', 'string', 'min' => 5, 'max' => 30],
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => 'mdm\admin\models\User', 'message' => 'Данный email уже используется.'],
[['username', 'email', 'password', 'password_repeat', 'question', 'answer',], 'required', 'message' =>'Заполните поле'],
['email', 'email'],
[['password'],'string', 'length' => [6,30]],
[['password_repeat'], 'compare', 'compareAttribute'=>'password', 'message'=>'Пароли не совпадают'],
[['answer'], 'string','length' => [5,30]],
['verifyCode', 'required'],
['verifyCode', 'captcha']
];
}
/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->question = $this->question;
$user->answer = $this->answer;
$user->generateAuthKey();
$user->status = 0;
if ($user->save()) {
$userRole = Yii::$app->authManager->getRole('user');
Yii::$app->authManager->assign($userRole, $user->getId());
return $user;
}
}
return null;
}
}
Код: Выделить всё
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm as Login;
use app\models\ContactForm;
use app\models\Pages;
use app\models\Products;
use app\models\ProductsImage;
use app\models\Signup;
use app\models\Coment;
use app\models\Orders;
use app\models\User;
use mdm\admin\models\form\PasswordResetRequest;
use mdm\admin\models\form\ResetPassword;
use mdm\admin\models\form\ChangePassword;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\NotFoundHttpException;
use yii\web\ForbiddenHttpException;
use yii\helpers\Url;
class SiteController extends AppController
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
public function actionAjax() {
if(Yii::$app->request->post('login')) {
$login = Yii::$app->request->post('login');
$title = 'username';
} elseif (Yii::$app->request->post('email')) {
$login = Yii::$app->request->post('email');
$title = 'email';
};
//debug($login);
if ($login) {
$res = User::find()->asArray()->where("$title = '$login'")->all();
if (empty($res)) {
$login = "";
} else {
$login;
}
echo json_encode($login);
// return $login;
}
}
/*public function actionInactive() {
return $this->render('lock');
}*/
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionAjaxcoment() {
if(Yii::$app->request->post()) {
//return print_r(Yii::$app->request->post());
$com = new Coment();
$com->user = $_POST['user'];
$com->body = $_POST['body'];
$com->product_id = $_POST['product_id'];
if ($com->save()) {
$data = array();
$query = Coment::find()->asArray()->orderBy(['id'=>SORT_DESC])->limit(1)->all();
if ($query) {
foreach ($query as $com) {
$data['user'] = "<div class=\"col-sm-12 coment\">".
"<div class=\"user-com\">".$com['user']."</div>".
"<div class=\"data-com\">".$com['data']."</div>".
"<div class=\"body-com\">".$com['body']."</div>".
"</div>";
}
echo json_encode($data);
}
}
}
}
public function actionAllcoments() {
if(Yii::$app->request->post()) {
$id = $_POST['id'];
$query = Coment::find()->asArray()->where("product_id = $id")->orderBy(['id'=>SORT_DESC])->all();
//$query = Coment::find()->asArray()->where("product_id = $id")->orderBy(['id'=>SORT_DESC])->all();
if ($query) {
if ($query) {
$data = array();
foreach ($query as $com) {
$data['com'] .= "<div class=\"col-sm-12 coment\">".
"<div class=\"user-com\">".$com['user']."</div>".
"<div class=\"data-com\">".$com['data']."</div>".
"<div class=\"body-com\">".$com['body']."</div>".
"</div>";
} echo json_encode($data);
}
/*$count = count($query);
$i = 1;
foreach ($query as $com) {
$coment = "<div class=\"user-com\">".$com['user']."</div>".
"<div class=\"data-com\">".$com['data']."</div>".
"<div class=\"body-com\">".$com['body']."</div>";
$data['com'] = $coment;
if ($i == ($count-6)) {
break;
}
$i++;
echo json_encode($data);
}*/
}
}
}
public function actionIndex()
{
$model = new Pages();
$query = Pages::find()->asArray()->where("title = 'Главная'")->all();
//debug($query);
$model = new Products();
$result = Products::find()->asArray()->with('products')->orderBy(['id'=>SORT_DESC])->limit(21)->all();
//debug($result);
$this->setMeta("Lorea | ".$query[0]['title'], $query[0]['keywords'], $query[0]['description']);
return $this->render('index', compact('query', 'result'));
}
//login
public function actionLogin()
{
$this->setMeta("Lorea | Авторизация");
if (!Yii::$app->getUser()->isGuest) {
return $this->goHome();
}
$model = new Login();
if ($model->load(Yii::$app->getRequest()->post()) && $model->login()) {
$_SESSION['login'] = $_POST['LoginForm']['username'];
return $this->goBack();
} else {
//print_r(Yii::$app->getRequest()->post());
return $this->render('login', [
'model' => $model,
]);
}
}
public function actionLogout()
{
Yii::$app->getUser()->logout();
return $this->goHome();
}
//signup
public function actionSignup()
{
//$this->layout = 'sign';
$model = new Signup();
$this->setMeta('Lorea | Регистрация');
//if ($model->load(Yii::$app->getRequest()->post())) {
// if ($user = $model->signup()) {
// return $this->goHome();
// }
// }
// print_r(Yii::$app->getRequest()->post());
if (!empty(Yii::$app->request->post('Signup'))) {
$session = Yii::$app->session;
$session->open();
//debug(Yii::$app->request->post('SignUp')['check']);
//if (Yii::$app->request->post('Signup')['check'] == 1) {
$_SESSION['reg'] = Yii::$app->request->post('Signup');
//debug(Yii::$app->request->post('SignUp'));
//print_r(Yii::$app->getRequest()->post());
$model->attributes = Yii::$app->request->post('Signup');
//$model->login = $res['login'];
if ($model->validate()) {
//$model->signup();
//unset($_POST['captcha']);
//debug($model); die;
if ($model->signup()) {
echo 'OK'; die;
//print_r($_SESSION);
Yii::$app->session->setFlash('success', 'Поздравляем! Вы успешно зарегистрировались. На Ваш Email адрес отправлено сообщение. Для активации акаунта пожалуйста перейдите по ссылке, указанной в письме');
Yii::$app->mailer->compose('registration', ['session' => $session])->setFrom(['ika.reply@gmail.com' => 'LOREA'])->setTo($_SESSION['reg']['email'])->setSubject('Поздравляем! Вы успешно зарегистрировались.')->send();
$session->remove('reg');
//return $this->refresh();
return $this->goHome();
} else {
Yii::$app->session->setFlash('error', 'Ошибка регистрации!');
}
// return $this->goHome();
}
// }
}
return $this->render('signup', compact('model'));
}
public function actionRequestPasswordReset()
{
//$this->layout = 'sign';
$this->setMeta("Lorea | Восстановление пароля");
$model = new PasswordResetRequest();
if ($model->load(Yii::$app->getRequest()->post()) && $model->validate()) {
if ($model->sendEmail()) {
Yii::$app->getSession()->setFlash('success', 'Письмо отправлено на указанный Email. Перейдите в почту для восстановления пароля.'/*'Check your email for further instructions.'*/);
return $this->goHome();
} else {
Yii::$app->getSession()->setFlash('error', 'Извините, на указанный Email невозможно отправить письмо.'/*'Sorry, we are unable to reset password for email provided.'*/);
}
}
return $this->render('requestPasswordResetToken', [
'model' => $model,
]);
}
/**
* Reset password
* @return string
*/
public function actionResetPassword($token)
{
//$this->layout = 'sign';
$this->setMeta("Lorea | Восстановление пароля");
try {
$model = new ResetPassword($token);
} catch (InvalidParamException $e) {
throw new BadRequestHttpException($e->getMessage());
}
if ($model->load(Yii::$app->getRequest()->post()) && $model->validate() && $model->resetPassword()) {
Yii::$app->getSession()->setFlash('success', 'Новый пароль успешно сохранен');
return $this->goHome();
}
return $this->render('resetPassword', [
'model' => $model,
]);
}
/**
* Reset password
* @return string
*/
public function actionChangePassword()
{
$this->setMeta("Lorea | Восстановление пароля");
$model = new ChangePassword();
if ($model->load(Yii::$app->getRequest()->post()) && $model->change()) {
return $this->goHome();
}
return $this->render('change-password', [
'model' => $model,
]);
}
protected function findModel($id)
{
if (($model = User::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('Данного пользователя не сущевствует');
// throw new NotFoundHttpException('The requested page does not exist.');
}
}
public function actionActive() {
if (!Yii::$app->request->get('hash') && !Yii::$app->request->get('hash') != "") {
throw new NotFoundHttpException('Данного пользователя не сущевствует');
}
$id = Yii::$app->request->get('hash');
$query = User::find()->where("auth_key = '$id'")->one();
if (!$query) {
throw new NotFoundHttpException('Отсутствуют данные для активации пользователя');
}
if ($query->status == User::STATUS_INACTIVE) {
$query->status = User::STATUS_ACTIVE;
if ($query->save()) {
Yii::$app->getSession()->setFlash('success', 'Поздравляем! Вы успешно активированы.');
return $this->goHome();
} else {
$errors = $user->firstErrors;
throw new UserException(reset($errors));
}
}
}
/*public function actionLogin()
{
if (!\Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
return $this->render('login', [
'model' => $model,
]);
}
public function actionLogout()
{
Yii::$app->user->logout();
return $this->goHome();
}*/
/*public function actionRegistration() {
$model = new SignUP();
$this->setMeta('IKA | Регистрация');
if (!empty(Yii::$app->request->post('SignUp'))) {
$session = Yii::$app->session;
$session->open();
//debug(Yii::$app->request->post('SignUp')['check']);
if (Yii::$app->request->post('SignUp')['check'] == 1) {
$_SESSION['reg'] = Yii::$app->request->post('SignUp');
//debug(Yii::$app->request->post('SignUp'));
$model->attributes = Yii::$app->request->post('SignUp');
//$model->login = $res['login'];
if ($model->validate()) {
$model->SignUp();
if ($model) {
Yii::$app->session->setFlash('success', 'Поздравляем! Вы успешно зарегистрировались. На Ваш Email адрес отправлено сообщение. Для активации акаунта пожалуйста перейдите по ссылке, указанной в письме');
Yii::$app->mailer->compose('registration', ['session' => $session])->setFrom(['ika.reply@gmail.com' => 'IKA'])->setTo($_SESSION['reg']['email'])->setSubject('Поздравляем! Вы успешно зарегистрировались.')->send();
$session->remove('reg');
//return $this->refresh();
return $this->goHome();
} else {
Yii::$app->session->setFlash('error', 'Ошибка регистрации!');
}
// return $this->goHome();
}
}
}
return $this->render('registration', compact('model'));
}*/
/*public function actionContact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh();
}
return $this->render('contact', [
'model' => $model,
]);
}
public function actionAbout()
{
return $this->render('about');
}*/
public function actionCab() {
if (!\Yii::$app->user->can('User')) {
throw new ForbiddenHttpException('У Вас нет прав доступа к данной странице!');
}
$this->setMeta("Lorea | Личный кабинет");
$session = Yii::$app->session;
$session->open();
$this->layout = 'cab';
$id = $_SESSION['login'];
$query = Orders::find()->where("login = '$id'")->with('orderProd')->asArray()->all();
return $this->render('cab', compact('query'));
}
public function actionComents() {
if (!\Yii::$app->user->can('User')) {
throw new ForbiddenHttpException('У Вас нет прав доступа к данной странице!');
}
$this->setMeta("Lorea | Личный кабинет");
$session = Yii::$app->session;
$session->open();
$this->layout = 'cab';
$id = $_SESSION['login'];
$query = Coment::find()->where("user = '$id'")->asArray()->all();
return $this->render('coments', compact('query'));
}
public function actionView() {
if (!\Yii::$app->user->can('User')) {
throw new ForbiddenHttpException('У Вас нет прав доступа к данной странице!');
}
$this->setMeta("Lorea | Личный кабинет");
$session = Yii::$app->session;
$session->open();
$this->layout = 'cab';
$id = $_SESSION['__id'];
$model = User::findOne($id);
if (Yii::$app->request->post('User')) {
//print_r($_POST['User']);
$login = $_POST['User']['username'];
//echo $login;
$email = $_POST['User']['email'];
$model->username = $login;
$model->email = $email;
if ( $model->save()) {
Yii::$app->session->setFlash('success', "Данные успешно изменены");
return $this->redirect('view');
} else {
Yii::$app->session->setFlash('error', "Ошибка изменения данных");
return $this->render('view', compact($model));
}
}
//$query = $model->find()->where("id = '$id'")->all();
//debug($query);
return $this->render('view', compact('model'));
}
}
Код: Выделить всё
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\helpers\Url;
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \mdm\admin\models\form\Signup */
?>
<div class="container reg">
<h3>Регистрация пользователя</h3>
<div class="reg-text">Поля обозначеные * обязательны для заполнения!</div>
<?php $form = ActiveForm::begin(['class'=>'horizontal']); ?>
<?= $form->field($model, 'username')->input(['autofocus'=>true])?>
<?= $form->field($model, 'email')->input('email') ?>
<?= $form->field($model, 'password')->passwordInput()?>
<?= $form->field($model, 'password_repeat')->passwordInput()?>
<?= $form->field($model, 'question')->dropDownList(['prompt' => 'Выберите вопрос', 'Любимое блюдо', 'Имя животного', 'Девичья фамилия матери', 'Любимый вид спорта', 'Марка автомобиля']);?>
<?= $form->field($model, 'answer')?>
<?= $form->field($model, 'verifyCode')->widget(\yii\captcha\Captcha::classname(), [
//'validateOnSubmit' => false,
// configure additional widget properties here
]) ?>
<div class="form-grop">
<?= Html::submitButton('Регистрация', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>