Invis1ble
27.02.2013 - 21:24
ты нотайсы поисправляй сначала
Цитата |
if (mb_strlen($_POST [uc_name], utf-8) = 0) or (mb_strlen($_POST [uc_name], utf-8) = 0) { |
а вот тут у тебя присваивание вместо сравнения
дальше смотреть и разбирать пока что нет смысла, исправляй
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
exotica
27.02.2013 - 21:33
Ответ для Игорь_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
27.02.2013 - 21:41
$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
27.02.2013 - 23:02
Invis1ble, Победил все Notice, кроме
Notice: Undefined index - это довольно жаркий момент оказался. Не могу понять где и как нужно объявить переменную, чтобы php перестал отображать этот notice...
К сожалению описание на php.net не понял. Пока в раздумьях и гугленьях. Проведу серию тестов с переменными на простых скриптиках, разберусь что от чего растет, и отпишу пофиксиный код своей авторизации
Игорь_Vasinsky, большое спасибо за корректировку запроса. Следующая версия кода, думаю будет использовать PDO метод. Чтобы разбирать возможные ошибки уже в нашем времени.
_____________
[FAQ]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Игорь_Vasinsky
27.02.2013 - 23:27
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
27.02.2013 - 23:58
exoticaподсказать причину, или будешь сам копать? )
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
exotica
28.02.2013 - 07:17
Цитата |
PDO - это не метод, а библиотека для работы с БД, так же можете обратить внимание на mysqli - там есть и процедурный и ооп синтаксис |
mysqli по параметрам описанным в сравнении на php.net немного больше возможностей имеет, приму его как вариант.
Цитата |
обозначает что в массиве нет элемента с таким ключём. В вашем случае - массив POST - видимо вы обратились к элементу - до того как он был создан (отправлена форма) - либо просто ошиблись в названии ключа. |
ок изучу момент
Цитата |
подсказать причину, или будешь сам копать? ) |
сейчас, сейчас решение проблемы почти готово))) думаю справлюсь)
_____________
[FAQ]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
exotica
28.02.2013 - 09:07
Итак, нотайсы отфиксил.
- Убрал в начале проверку на наличие символов в полях, т.к. следом идет 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]Регистрации пользователей, сохранение в БД---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза