Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysłanie POSTA bez formularza
Forum PHP.pl > Forum > Przedszkole
TomASS
Poczytałem sobie to.
Piszę w pliku try.php:
  1. <?php
  2. function doPost($uri,$postdata,$host){
  3.  $da = fsockopen($host, 80, $errno, $errstr);
  4.  if (!$da) {
  5.  echo "$errstr ($errno)<br/>n";
  6.  echo $da;
  7.  }
  8.  else {
  9.  $salida ="POST $uri HTTP/1.1rn";
  10.  $salida.="Host: $hostrn";
  11.  $salida.="User-Agent: php Scriptrn";
  12.  $salida.="Content-Type: application/x-www-form-urlencodedrn";
  13.  $salida.="Content-Length: ".strlen($postdata)."rn";
  14.  $salida.="Connection: closernrn";
  15.  $salida.=$postdata;
  16.  fwrite($da, $salida);
  17.  while (!feof($da))
  18.  $response.=fgets($da, 128);
  19.  $response=split("rnrn",$response);
  20.  $header=$response[0];
  21.  $responsecontent=$response[1];
  22.  if(!(strpos($header,"Transfer-Encoding: chunked")===false)){
  23.  $aux=split("rn",$responsecontent);
  24.  for($i=0;$i<count($aux);$i++)
  25.  if($i==|| ($i%2==0))
  26.  $aux[$i]="";
  27.  $responsecontent=implode("",$aux);
  28.  }//if
  29.  return chop($responsecontent);
  30.  }//else
  31.  }//function-doPost
  32.  doPost('catch.php','dana1=tomek','localhost')
  33. ?>

oraz plik catch.php:
  1. <?
  2. print_r($_POST);
  3. ?>

I nie działa, nie wyświetla żadnych danych :/
Co robię źle?
Chciałbym wysłać do serwera zewnętrznego dane postem....

Dzięki
erix
Cytat
$salida.="User-Agent: php Script\r\n";

Może przez to?
batman
A nie możesz użyć cURL ?
NetJaro
Do takich zabaw polecam serdecznie cURL. Wspaniałe i proste narzędzie ;-)
I sądze, że szybciej byś dostał odpowiedź na problem związany z nim niż fsockopen.. tak mi się wydaje smile.gif
TomASS
Cytat
Może przez to?

Niestety nie.

Cytat
A nie możesz użyć cURL ?

Cytat
Do takich zabaw polecam serdecznie cURL.

Ale po co zaraz do tak prostej rzeczy (tak mi się wydaje) zaraz wyciągać jakieś potężne biblioteki?

=================================================================
Rozwiązanie:

  1. <?php
  2. $url = 'localhost';
  3.  $fp = fsockopen($url, 80);
  4.  $out = "POST /BC/catch.php HTTP/1.0rn";
  5.  $out .= "Host: $urlrn";
  6.  $out .= "Content-Type: application/x-www-form-urlencodedrn";
  7.  $out .= "Content-Length:8rn";
  8.  $out .= "rn";
  9.  $out .= "system=3rn";
  10.  $out .= "Connection: Closernrn";//
  11.  fwrite($fp, $out);
  12.  while (!feof($fp))
  13.  {
  14. $end .= fgets($fp, 128);
  15.  }
  16.  fclose($fp);
  17.  echo $end;
  18. ?>


Nie trzeba było CURLA tongue.gif

Ciekawi mnie tylko, czy ten sposób ma jakieś ograniczenia ? Tzn czy z zewnętrznym serwerem uda mi się połączyć ?
batman
Jeśli nie chcesz używać cURL, to obok fsockopen jest jeszcze AJAX. Też możesz wysłać posta do jakiegoś skryptu bez potrzeby submitowania formularza.
erix
Cytat
Jeśli nie chcesz używać cURL, to obok fsockopen jest jeszcze AJAX.

TomASS chce rozwiązanie czysto w php, bez angażowania JS.
TomASS
Cytat
Cytat
Jeśli nie chcesz używać cURL, to obok fsockopen jest jeszcze AJAX.


TomASS chce rozwiązanie czysto w php, bez angażowania JS.

Dokładnie!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.