Здравствуйте. Заранее прошу прощения за столь нубский вопрос - голова совсем по жаре не соображает, на данный момент идеи закончились. Итак: Имеется HTML-форма - файл form.html со следующим содержимым: Код (Text): <html> <body> <form action=auth.php> Логин:<br> <input type=text name="login" value=""><br><br> Пароль:<br> <input type=password name="password" value=""><br><br> <input type=submit value="Продолжить"> </form> </body> </html> Также имеется обработчик - файл auth.php, содержащий следующее: Код (Text): <?php if (@$_REQUEST['login'] == 'admin' && @$_REQUEST['password'] == 'hello') { echo "<font color=green>Succefull!</font>"; } else { echo "<font color=red>Failed!</font>"; } Подскажите, пожалуйста, каким образом можно форму и обработчик прописать в одном файле auth.php (так, чтобы всё корректно сработало)?
У меня вообще-то так: Код (Text): if (@$_REQUEST['login'] == 'admin' @ - для запрета выдавать сообщения об ошибках на экран.
Когда то я начинал с подобных мыслей, "зачем плодить", "я все помню" и т.д. но со временем пришел к тому, что лучше все делить по принципу MVC - http://habrahabr.ru/post/150267/ по поводу "я все помню", как выяснилось все не так, спустя 2-3 дня приходится перебирать весь код, что бы найти какое то конкретное место. Добавлено спустя 5 минут 29 секунд: а твой ГК я бы сделал так: Код (PHP): <?php function auth_form() { ?> <form action=auth.php> Логин:<br> <input type=text name="login" value=""><br><br> Пароль:<br> <input type=password name="password" value=""><br><br> <input type=submit value="Продолжить"> </form> <?php } function auth() { if ( $_REQUEST['login'] == 'admin' AND $_REQUEST['password'] == 'hello' ) { echo "<font color=green>Succefull!</font>"; } else { echo "<font color=red>Failed!</font>"; } } ?> <!doctype html> <html> <head> <meta charset="utf-8" /> <title>PAGE</title> </head> <body> <?php if ( isset($_REQUEST['login'], $_REQUEST['password']) ) { auth(); } else { auth_form(); } ?> </body> </html>
VLK, премного Вам благодарен. То, что нужно! P.S. Правда, до изучения функций я пока ещё не добрался.
Так может с того и надо было начинать, что только еще в самом начале, хотя вам для форм еще рано, по чему учитесь (литература)? Код (PHP): <!doctype html> <html> <head> <meta charset="utf-8" /> <title>PAGE</title> </head> <body> <?php if ( isset($_REQUEST['login'], $_REQUEST['password']) ) { if ( $_REQUEST['login'] == 'admin' AND $_REQUEST['password'] == 'hello' ) { echo "<font color=green>Succefull!</font>"; } else { echo "<font color=red>Failed!</font>"; } } else { ?> <form action=auth.php> Логин:<br> <input type=text name="login" value=""><br><br> Пароль:<br> <input type=password name="password" value=""><br><br> <input type=submit value="Продолжить"> </form> <?php } ?> </body> </html>
VLK, обучаюсь по книге "Д. Котеров, А. Костарев - PHP 5. Наиболее полное руководство в подлиннике" (2-е издание, 2008). Можете посоветовать что получше, на Ваш взгляд?
2014 - 2008 = 6 лет, не малый срок, да и что значит "полное руководство", это выходит возможно не для новичков, а надо читать для новичков сайт ozon.ru в поиске вбиваешь "php" там появляется "php в разделе книги", дальше сортируешь по отзывам и ищешь что то посвежее да и по отзывам положительным. Меня такой способ не подводил еще.
А вы попробуйте выполнить этот кусок кода, удивитесь и найдите у себя ) http://php.ru/manual/language.operators.comparison.html Добавлено спустя 1 минуту 17 секунд: Вангую: лучше заюзать нормальный фреймворк и избавить себя от кучи проблем )
Да я пока что сам ушел не далеко от новичка, до фреймворков не дошел, а точнее YII сложновато, а вот CodeIgniter - возникает вопрос зачем он нужен, хотя я думаю со временем придет ответ.
romach, ну, тот вариант, что у меня работает вполне себе исправно. ЧЯДНТ? P.S. В моём случае нет равенства 0 == 'admin', так как $_REQUEST['login'] возвращает логин, который указывается в HTML-форме.
Пробовал такое дело. На озоне там везде рейтинги высокие... В другом месте отзыв почитаешь про ту же книгу и там уже отзыв не 5, а 3 будет. Информация довольно противоречивая. Вродь хвалят эти книги: Люк Веллинг, Лора Томсон - Разработка Web-приложений с помощью PHP и MySQL (4 издание, 2010) Дмитрий Котеров, Алексей Костарев - PHP 5. Наиболее полное руководство в подлиннике (2-е издание, 2008) Р. Никсон - Создаем динамические веб-сайты с помощью PHP, MySQL, javascript и CSS (2-е издание, 2013) Добавлено спустя 3 минуты 55 секунд: Ну, не знаю. Может, у меня какой-то косяк в php.ini, из-за которого передаётся не 0, а логин. Убедитесь сами. Вывел специально для вас значение $_REQUEST['login'] после того, как авторизуетесь (admin/hello). Если бы был 0, то Вы вряд ли смогли бы авторизоваться.
А я нашел такое http://www.ozon.ru/context/detail/id/24901491/ и такое http://www.ozon.ru/context/detail/id/7451274/ Я по этой книге изучал, но там вроде как не для новичков, а для тех, кто уже знаком с каким-нибудь языком программирования, я знал С++ и С#, а так, там все толково написано, даже есть примеры написания разного рода сайтов, хранилище закладок и т.д. Правда они совсем забыли написать про сессии и куки.
1 ифа хватит. Код (PHP): if(isset($_REQUEST['login'],$_REQUEST['password']) && 'admin'==$_REQUEST['login'] && 'password'==$_REQUEST['password'])) { //... } else { //... } Даже наверно сразу и создать переменные если в теле будем их использовать: Код (PHP): if(isset($_REQUEST['login'],$_REQUEST['password']) && 'admin'==$login=$_REQUEST['login'] && 'password'==$password=$_REQUEST['password'])) { //... } else { //... }
Я же дал ссылку. Если кратко, преобразование типов, происходящее при таком сравнении может привести к непредсказуемым результатам. Для примера: Код (Text): $a = new StdClass; $b = new StdClass; echo 'sum: ' . ($a + $b); --- Notice: Object of class stdClass could not be converted to int in [...][...] on line 4 Notice: Object of class stdClass could not be converted to int in [...][...] on line 4 sum: 2 Не смотря на нотисы, он таки их сложил. Старайтесь избегать подобного, в данном случае '==' использовать только при явной необходимости, в остальных - '===', т.е. ещё и сравнение типов. Добавлено спустя 4 минуты 32 секунды: CI уже ни кому не нужен, он полутруп ) Я для себя выбрал Laravel и Silex под мелочевку. Почитай их доки, там не все так сложно, как кажется на первый взгляд.
господь наш пастырь наш, он хранит тебя. Тройное равно поставь и всё точно будет хорошо всегда и везде.