[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP + MySql
kartuza
Доброго времени суток, уважаемые.
Только начинаю изучать PHP и MySql вместе с ним... Совсем еще нуб, как понимаете. Но на практике пытаюсь закреплять получаемые знания.
Поэтому наваял вот такую штуку.

<html>

<head>
<title>
Страница авторизации пользователя</title>
</head>

<body>

<?php

$form="<form action='forum.php' method='POST'>
Username: <input type='text' name='user_login'><br/>
Password: <input type='text' name='user_password'><p/>
<input type='submit' name='sub_button' value='Submit'>
</form>"
;

$d_forum_b = mysql_connect('localhost','***','****') or die (mysql_error());
mysql_select_db("step_by_step");
$u_login = $_POST['user_login'];
$u_password = $_POST['user_password'];
if ($u_login&&$u_password) {
$d_forum_connect = mysql_query('SELECT * FROM my_step') or die(mysql_error());

while ($res=mysql_fetch_assoc($d_forum_connect)) {

$log=$res['step_lg'];
$pas=$res['step_pss'];

if ($log!=$u_login||$pas!=$u_password){

}
else{
echo "welcome, $u_login";
goto msd;
};
};
echo "Неправильный логин-пароль<br/><form action='forum.php'>
<input type='submit' name='backward' value='Back'>
</form>"
;

} else {
echo $form;
}
msd:
?>
</body>

</html>



Хотел бы поинтересоваться, насколько данное неправильно, уязвимо или же вообще по-нубски написано?
Большая просьба не накидываться сильно, а помочь разобраться, как нужно делать правильно. Ибо опыта нет, а хотелось бы научиться делать правильно.



Спустя 10 минут, 37 секунд (11.01.2011 - 11:45) Evilsoul написал(а):
Прочитай это, потом задашь вопрос, если будет smile.gif

Спустя 9 минут, 27 секунд (11.01.2011 - 11:54) kartuza написал(а):
Спасиб за сцылку )) Добавил в закладки, заодно наткнулся на абзац:
"...Синтаксические ошибки. Самое простое дело. Мой вам совет: не бойтесь нотисов и варнингов (сообщений об ошибках), бойтесь их отсутствия. Программа более чем из пяти строк, не вызвавшая предупреждение при первом запуске - повод для паники. Что то тут не чисто. И хотя это шутка, но доля правды все же в этом есть..."
Именно изза опасений, что что-то тут не так, раз ошибок не выдает, сюда и зашел rolleyes.gif

Спустя 11 минут, 19 секунд (11.01.2011 - 12:05) Evilsoul написал(а):
Да, да, да, читай дальше, видишь у тебя уже код подсветился, немного аккуратнее стал smile.gif

Спустя 8 часов, 27 минут, 17 секунд (11.01.2011 - 20:33) sergeiss написал(а):
Цитата (kartuza @ 11.01.2011 - 12:34)
goto msd;

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

Спустя 7 минут, 29 секунд (11.01.2011 - 20:40) inpost написал(а):
sergeiss
goto можно сразу внутрь цикла или условия забросить?
goto msd;
if()
{
lalalal;
msd;
redirect;
}

Спустя 4 минуты, 19 секунд (11.01.2011 - 20:44) sergeiss написал(а):
inpost - низзя. И плюс к этому, после метки ставится ДВОЕТОЧИЕ!!!

Вот описалово из хэлпа. Тут четко сказано, что можно только выходить из циклов и всяких блоков с условиями, но нельзя заходить в них.
Цитата
goto
The goto operator can be used to jump to another section in the program. The target point is specified by a label followed by a colon, and the instruction is given as goto followed by the desired target label. This is not a full unrestricted goto. The target label must be within the same file and context, meaning that you cannot jump out of a function or method, nor can you jump into one. You also cannot jump into any sort of loop or switch structure. You may jump out of these, and a common use is to use a goto in place of a multi-level break.

Спустя 8 часов, 46 минут, 30 секунд (12.01.2011 - 05:31) kartuza написал(а):
Цитата (sergeiss @ 11.01.2011 - 17:33)
Цитата (kartuza @ 11.01.2011 - 12:34)
goto msd;

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

Из-за недостаточности знаний пришлось использовать эту штуку.
Впредь буду более благоразумен. smile.gif

Спустя 1 час, 21 минута, 6 секунд (12.01.2011 - 06:52) inpost написал(а):
kartuza
Выход из перебора (цикла) - командой break.

Спустя 58 минут, 1 секунда (12.01.2011 - 07:50) kartuza написал(а):
Цитата (inpost @ 12.01.2011 - 03:52)
kartuza
Выход из перебора (цикла) - командой break.

Да, я с этим знаком. Но в данном случае выполнилось бы так же выражение и самого первого условия.
То есть при удачном раскладе выводилось бы
welcome
Неправильный логин-пароль

Я часа три ломал голову, переставляя условия и заводя циклы, чтобы не происходил такой коллапс. В итоге сдался и воспользовался goto.

Спустя 2 часа, 49 минут, 36 секунд (12.01.2011 - 10:40) sergeiss написал(а):
kartuza, а кто тебе мешает такую логику использовать:
$correct=false;
while( Условие )
{
...
if( еще_условие )
{
$correct=true;
break;
}
...
}
if( $correct )
{ чего-то делаешь }
else
{ что-то другое делаешь }

Никаких тебе GOTO :), всё ясно и понятно.

Спустя 4 часа, 14 минут, 35 секунд (12.01.2011 - 14:54) inpost написал(а):
kartuza
У тебя условие: if-else. if - удача, else - не удача. Вывод ошибки надо в неудачу!
Быстрый ответ:

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