За последние 24 часа нас посетили 17925 программистов и 1578 роботов. Сейчас ищут 887 программистов ...

Как объединить HTML-форму и PHP-код в одном PHP-файле?

Тема в разделе "PHP для новичков", создана пользователем Sferg, 14 авг 2014.

  1. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    Здравствуйте. Заранее прошу прощения за столь нубский вопрос - голова совсем по жаре не соображает, на данный момент идеи закончились. Итак:

    Имеется HTML-форма - файл form.html со следующим содержимым:

    Код (Text):
    1. <html>
    2. <body>
    3. <form action=auth.php>
    4. Логин:<br>
    5. <input type=text name="login" value=""><br><br>
    6. Пароль:<br>
    7. <input type=password name="password" value=""><br><br>
    8. <input type=submit value="Продолжить">
    9. </form>
    10. </body>
    11. </html>
    Также имеется обработчик - файл auth.php, содержащий следующее:

    Код (Text):
    1. <?php
    2. if (@$_REQUEST['login'] == 'admin' && @$_REQUEST['password'] == 'hello') {
    3. echo "<font color=green>Succefull!</font>";
    4. }
    5. else {
    6. echo "<font color=red>Failed!</font>";
    7. }
    Подскажите, пожалуйста, каким образом можно форму и обработчик прописать в одном файле auth.php (так, чтобы всё корректно сработало)?
     
  2. comrade_14

    comrade_14 Новичок

    С нами с:
    14 авг 2014
    Сообщения:
    2
    Симпатии:
    0
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (Text):
    1.  
    2. if (0 == 'admin') {
    3.   echo 'wtf?';
    4. }
    к слову.
     
  4. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    Чтобы не плодить кучи лишних файлов.

    Добавлено спустя 1 минуту:
    Где Вы увидели у меня такое?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    там, где ты не видишь ;)
     
  6. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    У меня вообще-то так:
    Код (Text):
    1. if (@$_REQUEST['login'] == 'admin'
    @ - для запрета выдавать сообщения об ошибках на экран.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Когда то я начинал с подобных мыслей, "зачем плодить", "я все помню" и т.д.

    но со временем пришел к тому, что лучше все делить по принципу MVC - http://habrahabr.ru/post/150267/

    по поводу "я все помню", как выяснилось все не так, спустя 2-3 дня приходится перебирать весь код, что бы найти какое то конкретное место.

    Добавлено спустя 5 минут 29 секунд:
    а твой ГК я бы сделал так:
    Код (PHP):
    1. <?php
    2.  
    3. function auth_form() {
    4. ?>
    5. <form action=auth.php>
    6. Логин:<br>
    7. <input type=text name="login" value=""><br><br>
    8. Пароль:<br>
    9. <input type=password name="password" value=""><br><br>
    10. <input type=submit value="Продолжить">
    11. </form>
    12. <?php
    13. }
    14.  
    15. function auth() {
    16.     if ( $_REQUEST['login'] == 'admin' AND $_REQUEST['password'] == 'hello' ) {
    17.         echo "<font color=green>Succefull!</font>";
    18.     }
    19.     else {
    20.         echo "<font color=red>Failed!</font>";
    21.     }
    22. }
    23.  
    24. ?>
    25. <!doctype html>
    26. <html>
    27. <head>
    28. <meta charset="utf-8" />
    29. <title>PAGE</title>
    30. </head>
    31. <body>
    32. <?php
    33.  
    34. if ( isset($_REQUEST['login'], $_REQUEST['password']) ) {
    35.     auth();
    36. }
    37. else {
    38.     auth_form();
    39. }
    40.  
    41.  
    42.  
    43. ?>
    44. </body>
    45. </html>
     
  8. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    VLK, премного Вам благодарен. То, что нужно!

    P.S. Правда, до изучения функций я пока ещё не добрался.
     
  9. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Так может с того и надо было начинать, что только еще в самом начале, хотя вам для форм еще рано, по чему учитесь (литература)?

    Код (PHP):
    1. <!doctype html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>PAGE</title>
    6. </head>
    7. <body>
    8. <?php
    9.  
    10. if ( isset($_REQUEST['login'], $_REQUEST['password']) ) {
    11.  
    12. if ( $_REQUEST['login'] == 'admin' AND $_REQUEST['password'] == 'hello' ) {
    13. echo "<font color=green>Succefull!</font>";
    14. }
    15. else {
    16. echo "<font color=red>Failed!</font>";
    17. }
    18.  
    19. }
    20. else {
    21.  
    22. ?>
    23. <form action=auth.php>
    24. Логин:<br>
    25. <input type=text name="login" value=""><br><br>
    26. Пароль:<br>
    27. <input type=password name="password" value=""><br><br>
    28. <input type=submit value="Продолжить">
    29. </form>
    30. <?php
    31.  
    32. }
    33.  
    34.  
    35.  
    36. ?>
    37. </body>
    38. </html>
     
  10. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    VLK, обучаюсь по книге "Д. Котеров, А. Костарев - PHP 5. Наиболее полное руководство в подлиннике" (2-е издание, 2008).

    Можете посоветовать что получше, на Ваш взгляд?
     
  11. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    2014 - 2008 = 6 лет, не малый срок, да и что значит "полное руководство", это выходит возможно не для новичков, а надо читать для новичков :)

    сайт ozon.ru в поиске вбиваешь "php" там появляется "php в разделе книги", дальше сортируешь по отзывам и ищешь что то посвежее да и по отзывам положительным.
    Меня такой способ не подводил еще.
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А вы попробуйте выполнить этот кусок кода, удивитесь и найдите у себя )
    http://php.ru/manual/language.operators.comparison.html

    Добавлено спустя 1 минуту 17 секунд:
    Вангую: лучше заюзать нормальный фреймворк и избавить себя от кучи проблем )
     
  13. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Да я пока что сам ушел не далеко от новичка, до фреймворков не дошел, а точнее YII сложновато, а вот CodeIgniter - возникает вопрос зачем он нужен, хотя я думаю со временем придет ответ.
     
  14. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    romach, ну, тот вариант, что у меня работает вполне себе исправно. ЧЯДНТ?

    P.S. В моём случае нет равенства 0 == 'admin', так как $_REQUEST['login'] возвращает логин, который указывается в HTML-форме.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    указывается ноль и нежданчик
     
  16. Sferg

    Sferg Новичок

    С нами с:
    9 июл 2014
    Сообщения:
    21
    Симпатии:
    0
    Пробовал такое дело. На озоне там везде рейтинги высокие... В другом месте отзыв почитаешь про ту же книгу и там уже отзыв не 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, то Вы вряд ли смогли бы авторизоваться.
     
  17. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    А я нашел такое http://www.ozon.ru/context/detail/id/24901491/
    и такое http://www.ozon.ru/context/detail/id/7451274/

    Я по этой книге изучал, но там вроде как не для новичков, а для тех, кто уже знаком с каким-нибудь языком программирования, я знал С++ и С#, а так, там все толково написано, даже есть примеры написания разного рода сайтов, хранилище закладок и т.д. Правда они совсем забыли написать про сессии и куки.
     
  18. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    1 ифа хватит.
    Код (PHP):
    1. if(isset($_REQUEST['login'],$_REQUEST['password']) && 'admin'==$_REQUEST['login'] && 'password'==$_REQUEST['password'])) {
    2.     //...
    3. } else {
    4.     //...
    5. } 
    Даже наверно сразу и создать переменные если в теле будем их использовать:
    Код (PHP):
    1. if(isset($_REQUEST['login'],$_REQUEST['password']) && 'admin'==$login=$_REQUEST['login'] && 'password'==$password=$_REQUEST['password'])) {
    2.     //...
    3. } else {
    4.     //...
    5. } 
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Я же дал ссылку. Если кратко, преобразование типов, происходящее при таком сравнении может привести к непредсказуемым результатам. Для примера:
    Код (Text):
    1.  
    2. $a = new StdClass;
    3. $b = new StdClass;
    4.  
    5. echo 'sum: ' . ($a + $b);
    6. ---
    7. Notice: Object of class stdClass could not be converted to int in [...][...] on line 4
    8. Notice: Object of class stdClass could not be converted to int in [...][...] on line 4
    9.  sum: 2
    Не смотря на нотисы, он таки их сложил.
    Старайтесь избегать подобного, в данном случае '==' использовать только при явной необходимости, в остальных - '===', т.е. ещё и сравнение типов.

    Добавлено спустя 4 минуты 32 секунды:
    CI уже ни кому не нужен, он полутруп ) Я для себя выбрал Laravel и Silex под мелочевку. Почитай их доки, там не все так сложно, как кажется на первый взгляд.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    господь наш пастырь наш, он хранит тебя. Тройное равно поставь и всё точно будет хорошо всегда и везде.