В данном посте решил разобраться с GET | POST запросами к серверу по протоколу http. В принципе ничего сложного, и в общих чертах все понятно. Но тем не менее хотел попрактиковаться.
Учебную задачу для себя поставил так – создать HTML форму с логином, паролем, кнопкой отправить, при помощи скрипта PHP проверять правильность введенных данных, а при помощи Delphi клиента непосредственно логиниться и сообщать об успешной или неуспешной авторизации.
Вот этапы работы, которые я планирую проделать
-Создание формы при помощи HTML (логин / пароль / кнопка отправить)
-Cоздание PHP скрипта, который будет обрабатывать данные с формы (если логин пароль правильный, то будет выводиться сообщение об успешном входе)
– Собственно отправка GET | POST запроса из клиента, созданного на Delphi.
Создание HTML формы
1 2 3 4 5 6 |
<form class="myform" style="width: 300px; border: 1px dotted red; margin: auto;" action="http://digital-flame.ru/myscripts/entrance.php" method="GET"> <div style="padding: 10px;">Логин: <span style="float: right;"><input name="user_name" size="50" type="text" /></span></div> <div style="padding: 10px;">Пароль:<span style="float: right;"> <input name="user_year" size="50" type="text" /></span></div> <div style="position: relative; left: 70px;"><input name="submit_form" type="submit" value="Отправить" /></div> </form> |
Результат кода
Создание простейшего PHP скрипта проверки логина пароля
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php header('Content-Type: text/html; charset=utf-8');?> <? if ($_REQUEST['login']=="mylogin" && $_REQUEST['password']=="mypassword"){ echo "<br/><br/> <p style=\"text-align:center; font-size:100px; color:green; \" > Access granted</p>";; echo "<hr/>"; echo "login=".$_REQUEST['login']; echo "<br/>"; echo "password=".$_REQUEST['password']; } else { echo "<br/><br/> <p style=\"text-align:center; font-size:100px; color:red\" > Wrong login/password access denied</p>"; } ?> |
То есть если в форме выше забить любые данные – скрипт выведет на странице отрицательный результат. А если – mylogin mypassword, то положительный!
Создание клиента в Delphi
Создадим клиента Delphi – 2 кнопки Get и Post на панели сверху, а под панелью Webbrowser
Будем отправлять Get и Post запросы, а результат отображать в браузере.
Ниже обработчик кнопки Get
1 2 3 4 5 6 7 8 9 10 11 |
procedure TForm2.GetClick(Sender: TObject); var RequestToServer:string; ServerAnswer:string; begin RequestToServer:= 'http://digital-flame.ru/myscripts/entrance.php?login=mylogin&password=mypassword'; ServerAnswer:=idHttp1.Get(RequestToServer); if ServerAnswer<>''then Webbrowser1.LoadFromStrings(ServerAnswer,'ServerAnswer'); end; |
А далее обработчик кнопки POST
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
procedure TForm2.PostClick(Sender: TObject); var RequestToServer:string; ServerAnswer:string; Parameters:TStringlist; begin Parameters:=Tstringlist.Create; Parameters.Add('login=mylogin'); Parameters.Add('password=mypassword'); RequestToServer:= 'http://digital-flame.ru/myscripts/entrance.php'; ServerAnswer:=idHttp1.Post(RequestToServer,Parameters); if ServerAnswer<>''then Webbrowser1.LoadFromStrings(ServerAnswer,'ServerAnswer'); end; |
Как видно, разница между методами, в том числе в том, что в GET методе параметры отправляются в url строке, а в POST методе – параметры отправляются отдельно.
Вот результат
А при неправильных параметрах – можно в коде кнопок GET POST изменить логин пароль хотя бы на 1 символ и получаем такой результат
В принципе, тема оказалась не очень сложной для освоения, но для меня это был интересный опыт. Я так понимаю, можно аналогичные вещи делать со многими скриптами, требующими отправки того или иного числа параметров. В дальнейших постах поработаем с cookie файлами.