[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оцените скрипт авторизации
Страницы: 1, 2, 3
Invis1ble
ты нотайсы поисправляй сначала
Цитата
if (mb_strlen($_POST [uc_name], utf-8) = 0) or (mb_strlen($_POST [uc_name], utf-8) = 0) {

а вот тут у тебя присваивание вместо сравнения
дальше смотреть и разбирать пока что нет смысла, исправляй


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

exotica
Ответ для Игорь_Vasinsky

Чуть выше был пост от Valick:
Цитата
хеш проля должен быть в базе и сравнение должно проходить запросом, а не "винегретом"


Был изначально только этот вариант, который вы цитировали.

Т.е вполне достаточно следующего кода?
$tosql = "SELECT * FROM users WHERE ucn='.$usn.' && ucp='.sha1($ucp).'";
$find = mysql_query($tosql, $coming) or die ('Неверный запрос'. mysql_error());
if ($find) {
$finded = mysql_fetch_assoc($find);
$result = 'Добро пожаловать';
}
else {
$result = 'Пользователь с данным логином и паролем не найден';
}


В случае удачного запроса извлекаем данные ввиде массива, в конце концов думаю что в таблице будет не только логин и пароль, а еще какие либо данные - чтобы их легко применить в дальнейшем создаю массив $finded[]

Ответ для Invis1ble

С нотайсами только начал разбираться, скоро добьюсь результата я думаю).
ТОчно... == вместо =

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Игорь_Vasinsky
$tosql = "SELECT * FROM users WHERE ucn='".$usn."' && ucp='".sha1($ucp)."'";


а так - да. достаточно

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
exotica
Invis1ble, Победил все Notice, кроме Notice: Undefined index - это довольно жаркий момент оказался. Не могу понять где и как нужно объявить переменную, чтобы php перестал отображать этот notice...

К сожалению описание на php.net не понял. Пока в раздумьях и гугленьях. Проведу серию тестов с переменными на простых скриптиках, разберусь что от чего растет, и отпишу пофиксиный код своей авторизации

Игорь_Vasinsky, большое спасибо за корректировку запроса. Следующая версия кода, думаю будет использовать PDO метод. Чтобы разбирать возможные ошибки уже в нашем времени.

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Игорь_Vasinsky
PDO - это не метод, а библиотека для работы с БД, так же можете обратить внимание на mysqli - там есть и процедурный и ооп синтаксис

Цитата
Notice: Undefined index


обозначает что в массиве нет элемента с таким ключём.
В вашем случае - массив POST - видимо вы обратились к элементу - до того как он был создан (отправлена форма) - либо просто ошиблись в названии ключа.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
exotica
подсказать причину, или будешь сам копать? )

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

exotica
Цитата
PDO - это не метод, а библиотека для работы с БД, так же можете обратить внимание на mysqli - там есть и процедурный и ооп синтаксис


mysqli по параметрам описанным в сравнении на php.net немного больше возможностей имеет, приму его как вариант.

Цитата
обозначает что в массиве нет элемента с таким ключём.
В вашем случае - массив POST - видимо вы обратились к элементу - до того как он был создан (отправлена форма) - либо просто ошиблись в названии ключа.

ок изучу момент

Цитата
подсказать причину, или будешь сам копать? )

сейчас, сейчас решение проблемы почти готово))) думаю справлюсь)

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
exotica
Итак, нотайсы отфиксил.
  • Убрал в начале проверку на наличие символов в полях, т.к. следом идет preg_match, делать проверку перед ним посчитал лишним ( поправьте если не прав)
  • Далее изменил conn_db.php теперь подключение при помощи mysqli_connect()
  • Соответственно изменил query запрос по синтаксису mysqli
<?php
error_reporting(E_ALL);

if (!preg_match('/^[a-zA-Z0-9_]{3,32}$/', $_POST['ucname'])) {
exit ('Have Incorrect symbol.');
} elseif (!preg_match('/^[a-zA-Z0-9_]{3,32}$/', $_POST['ucpass'])) {
exit ('Have Incorrect symbol.');
}

include '../conn/conn_db.php';
$ucn = mysqli_real_escape_string($coming, $_POST['ucname']);
$ucp = mysqli_real_escape_string($coming, $_POST['ucpass']);

$tosql = "SELECT * FROM users WHERE ucname='".$ucn."' && ucpass='".sha1($ucp)."'";
$find = mysqli_query ($coming, $tosql) or die ('Ошибка: '.mysqli_error($coming));
$finded = mysqli_fetch_assoc($find);

if ($finded) {
echo 'Здравствуйте', $finded['ucrealname'];
} else {
echo 'Пользователь с таким именем не существует.';
echo '<br /><a href="http://muppl.ru/index.php">Назад к форме</a>';
}
if (count($find) > 0) {
mysqli_free_result($find);
}
mysqli_close($coming);
?>



Собственно и все, теперь можем продвинуться чуть далее от начала, Invis1ble ? Или я опять накасипорил )))

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.