<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Проблема с авторизацией
25.10.2011 23:21:01 Проблема с авторизацией Сообщение #1
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Михаил, вот теперь начал разбираться с авторизацией, только вот почему то выдаёт ошибку, в чём может быть дело?
Что косается класса, то регистрация и авторизация в одном классе, отвечает за вход функция public function insertDataAuth().
Вот код
registration.php
<?php
class registration {
public $log;
public $pass;
public $repeatpass;
public function __construct($log, $pass, $repeatpass) {
$this->log = $log;
$this->pass = $pass;
$this->repeatpass = $repeatpass;
}
public function checkDataLoginRegAuth() {
if (isset($this->log)) {
if ($this->log == '') {
unset($this->log);
}
}
}
public function checkDataPassLog() {
$log = $_POST['login'];
if (isset($_POST['password'])) { $pass=md5($_POST['password']); if ($pass =='') { unset($pass);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($log) or empty($pass)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!";
}
}

public function checkDataPassReg() {
if (isset($this->pass)) {
if ($this->repeatpass == $this->pass) {
if (($this->pass == '') || ($this->repeatpass == '')) {
exit ("Введите данные заново";
}
}
else {
exit ("Пароли не совпадают!";
}
}
if ((empty($this->log)) || (empty($this->pass))) {
exit ("Обязательные поля должны быть заполнены!";
}

}

public function insertDataReg() {
$name = $_POST['name'];
$insert = mysql_query ("INSERT INTO users (login, name, password) VALUES('$this->log', '$name', '$this->pass')";
if ($insert == 'TRUE')
{
echo "Вы успешно зарегистрированы!";
}
else {
echo "Ошибка при регистрации!";
}
}

public function insertDataAuth() {
$result = mysql_query("SELECT * FROM users WHERE login='$this->log'"; //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{
//если пользователя с введенным логином не существует
exit ("Извините, введённый вами login или пароль неверный.";
}
else {
//если существует, то сверяем пароли
if ($myrow['password']==$this->pass) {
//если пароли совпадают, то запускаем пользователю сессию!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];
echo "Вы успешно вошли на сайт! <a href='/index.php'>Главная страница</a>";
}
else {
//если пароли не сошлись

exit ("Извините, введённый вами login или пароль неверный.";
}
}


}


}

?>

login.php
<?php
session_start();
require_once "classes/dbconnect.php";
require_once "classes/registration.php";
$registr = new registration($_POST['login'], md5($_POST['password']));
echo $registr->checkDataLoginRegAuth();
echo $registr->checkDataPassLog();
echo $registr->insertDataAuth();
?>

Ошибка
Warning: Missing argument 3 for registration::__construct(), called in L:\home\test33.ru\www\login.php on line 5 and defined in L:\home\test33.ru\www\classes\registration.php on line 6
Извините, введённый вами login или пароль неверный.
Профиль
25.10.2011 23:23:34 Проблема с авторизацией Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Там, где Вы делаете вызов конструктора, Вы передаёте только 2 параметра, а требуется 3 параметра.
Профиль
25.10.2011 23:30:59 Проблема с авторизацией Сообщение #3
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Сделал передачу третьего параметра, но всё равно почему то выдаёт, что логин или пароль не верный, хотя всё введено правильно
Профиль
25.10.2011 23:37:51 Проблема с авторизацией Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Зачем здесь нужны эти $_POST? Они же содержатся в полях класса:
public function checkDataPassLog() {
$log = $_POST['login'];
if (isset($_POST['password'])) { $pass=md5($_POST['password']); if ($pass =='') { unset($pass);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($log) or empty($pass)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!";
}
}
Профиль
25.10.2011 23:43:18 Проблема с авторизацией Сообщение #5
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Вот, переделал вот так
public function checkDataPassLog() {
if (isset($this->pass)) { if ($this->pass =='') { unset($this->pass);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($this->log) or empty($this->pass)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!";
}
}

Но всё равно не могу авторизоваться, пишет тоже самое
Профиль
25.10.2011 23:53:00 Проблема с авторизацией Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Но всё равно не могу авторизоваться, пишет тоже самое

А мы ещё не дошли до решения этой проблемы. Теперь ищите ошибку так. Смотрите, почему выводится "неверный пароль". Посмотрите значения переменных. Проверьте условия, посмотрите, что приходит из базы. Проверяйте через echo каждую переменную, которая влияет на вывод "неверный пароль". Учитесь искать ошибки - это очень важно!
Теоретическая база здесь: http://myrusakov.ru/php-finderror.html
Профиль
25.10.2011 23:54:32 Проблема с авторизацией Сообщение #7
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Спасибо, буду искать)))
Профиль
27.10.2011 03:06:56 Проблема с авторизацией Сообщение #8
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Спасибо, Михаил, нашёл))) Вся проблема была в том, что несколько пользователей с одинаковым логином, но с разными паролями были в базе))))
Профиль