PHP: strefaphp.net
PHP: strefaphp.net



 
Czy odwiedziłeś już te strony? -
dodał: Vengeance

Opis artykułu dodano: 22-07-2004 03:03
W artykule zostanie przedstawiony sposób wysyłania danych POST bez korzystania z formularza.
dodał: AndyPSV | autor: AndyPSV | czytano: 21795 razy

Inne materiały do artykułu

Wysyłanie danych POST bez formularza.
Z pewnością każdy zaawansowany webmaster natrafił na problem wysłania danych POST bez pisania formularza. Osobiście też natknąłem się na ten problem przy próbie pobrania linków do galerii do gier korzystając z serwisów gry.wp.pl oraz gamespot.com.
Na przykładzie tego pierwszego serwisu postaram się wytłumaczyć zastosowaną technikę. Więc zaczynamy.
Pierwszym krokiem będzie otwarcie serwisu, do którego chcemy przesłać dane POST, w tym przypadku będzie to serwis gry.wp.pl.
Następnie należy otworzyć źródło strony i wyszukać w nim fragment z formularzem. W tym przypadku:

Kod:


<form action="http://gry.wp.pl/core.html?filtr=0,0&x=szukaj" name="WPng" method="POST"><nobr>&nbsp;
    <input type="hidden" name="fromBox" value="1">&nbsp;<input type="text" name="szukaj" class="WPS1" size="16">
    ..
    <input align="absmiddle" type="image" border="0" src="http://i.wp.pl/a/i/sg/wps.gif" name="Szukaj" width="56" height="26" hspace="1">
    ..
</form>


Teraz w celu przesłania danych POST do strony należy otworzyć stronę poprzez fsockopen(), następnie przesłać nagłówki...


Kod:


<?php
   $url 
'gry.wp.pl';
   
$fp fsockopen($url80$errno$errstr1);
   
$out "POST /core.html?filtr=0,0&x=szukaj HTTP/1.0\r\n";
   
$out .= "Host: $url\r\n";
   
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
/**
* Tu podajemy długość całego łańcucha zmiennych POST (patrz niżej)
*/
   
$out .= "Content-Length: 13\r\n";
   
$out .= "\r\n";
/**
* Tu kolejno podajemy zmienne POST oddzielając je & (tak jak w GET)
*/
   
$out .= "szukaj=FRAZA\r\n"
   
$out .= "Connection: Close\r\n\r\n";
   
fwrite($fp$out);
   while (!
feof($fp))
   {
      
$echo .= fgets($fp128);
   }
   
fclose($fp);
   echo 
substr($echo,185);
?>


Ponadto nagłówki można podejrzeć w mozilli (narzędzia > narzędzia programistyczne > nagłówki http).

Jak widać w powyższym kodzie - wystarczy otworzyć url, oraz wpisać odpowiednie dane (które czerpiemy bezpośrednio z formularza).
Myślę, że udało mi się opisać w zrozumiały sposób częsty problem programistów.

Pozdrawiam,
AndyPSV
contact: andypsv@irc.pl
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt