Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ... wysyłanie danych POST bez formularza
Forum PHP.pl > Forum > PHP
broU
korzystałem z tego
http://vengeance.r4m80.cjb.net/index.php?p...what=view&id=12

no i nie mam szczerze pojęcia jak to zmodyfikowac , zeby przeslac na localhoscie dane z jednego pliku (1.php) do drugiego (2.php) ... modyfikowalem ten kod na rozne sposoby i nie chce dzialac ... nie wywala zadnych bledow , po prostu laczy i laczy ...

PS : i skad wziac dlugosc POST ? czego to ma byc dlugosc ?
FiDO
Cytat(broU @ 2004-07-31 13:37:15)
PS : i skad wziac dlugosc POST ? czego to ma byc dlugosc ?

Wielkosc danych ktore przesylasz POST'em w bajtach. Dane POST wygladaja mniej wiecej tak:
Kod
zmienna=wartosc&zmienna2=wartosc2

etc.
To ma byc dlugosc wlasniego tego ciagu.

BTW znacznie prosciej jest to zrobic z pomoca CURL'a. Nie trzeba sie wtedy martwic o rozmiar danych, wszystko jest automatycznie obliczane.
broU
a możesz podac jakies zrodlo informacji o tym CURL'u ?
FiDO
Jasne... http://pl2.php.net/manual/pl/ref.curl.php
Niestety php.net ma jakis problem z serwerami i nie ma najwazniejszej czesci manuala, czyli komentarzy, w ktorych zawsze jest mnostwo przykladow.
Wieczorem jak nie zapomne postaram sie przytargac jakis malutki przykladzik wyslania POST'a.
broU
po angielsku ... no cóż , jakos dam sobie radę (:

czekam na przykładzik(i) (: z góry dzięki .
Vengeance
broU:

masz formularz:
(przyjmijmy, że plik skrypt.php znajduje się w http://localhost/strona/skrypt.php wraz z formularzem.)
  1. <form action="skrypt.php?what=add" method="post">
  2. <input type="type" name="tytul">
  3. <input type="type" name="autor">
  4. <input type="submit" value"dodaj news">
  5. </form>


A oto kod php pliku dodaj_news.php:

  1. <?php 
  2.  $url = 'localhost'; 
  3.  $fp = fsockopen($url, 80); 
  4.  $out = &#092;"POST /strona/skrypt.php?what=add HTTP/1.0rn\"; 
  5.  $out .= &#092;"Host: $urlrn\"; 
  6.  $out .= &#092;"Content-Type: application/x-www-form-urlencodedrn\"; 
  7.  // patrz niżej* 
  8.  $out .= &#092;"Content-Length: 27rn\"; 
  9.  $out .= &#092;"rn\"; 
  10.  // patrz niżej**
  11.  $out .= &#092;"tytul=fajny_news&autor=broUrn\"; 
  12.  $out .= &#092;"Connection: Closernrn\"; 
  13.  fwrite($fp, $out); 
  14.  while (!feof($fp)) 
  15.  { 
  16. $end .= fgets($fp, 128); 
  17.  } 
  18.  fclose($fp); 
  19.  echo $end;
  20. ?>

teraz objaśnienia.

gwazdki w objaśnieniu oznaczają dany fragment z kodzie oznaczony tą samą gwiazdką biggrin.gif

W fsockopen nawiązujesz połączenie z localhostem (lub innym serwerem)

* tu podajesz długość sciągu **. Długość czyli liczba znaków. możes zrobić strlen()
** tu podajesz zmienne POST tak jak byś wpisywał w URL

jak jeszcze coś ci nie działa lub nie rozumiesz to napisz.
berdyk
[quote=FiDO,2004-07-31 16:37:03] tiredsmiley.gif [QUOTE=broU,2004-07-31 13:37:15] Dane POST wygladaja mniej wiecej tak:
Kod
zmienna=wartosc&zmienna2=wartosc2

etc. [/quote]
Sorki ale to jest łańcuch metody GET a nie POST
FiDO
Tak sie sklada jakos, ze oba wygladaja tak samo...

Przykladu nie bylo, bo nie bylo mnie juz jednak w necie wczoraj. Teraz jestem, ale na praktykach biggrin.gif ale sprobuje z pamieci jak by przyklad wyzej wygladal za pomoca CURL'a:
  1. <?php
  2.  
  3. $curl = curl_init('http://www.domena.pl/plik.php');
  4. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($curl, CURLOPT_POST, 1);
  6. curl_setopt($curl, CURLOPT_POSTFIELDS, &#092;"tytul=costam&autor=costam\");
  7.  
  8. $dane = curl_exec($curl);
  9.  
  10. ?>

Prawda, ze prosciej ?

A mozna jeszcze prosciej, jak sie napisze do tego prosta klase.
Ja cos takiego zrobilem i teraz wyglada to mniej wiecej tak:
  1. <?php
  2.  
  3. $curl = new Http(&#092;"http://www.domena.pl/\");
  4.  
  5. $dane = $curl->POST('plik.php', &#092;"tytul=costam&autor=costam\");
  6. // lub tak jesli trzeba GET'a
  7. $dane = $curl->GET('plik.php');
  8.  
  9. ?>
broU
Vengeance - wszystko ok , działa jak należy (:

FiDo - coś jest nie tak , cały czas wywala mi błąd
Fatal error: Call to undefined function: curl_init() in ...
rogrog
@broU: jak jest "call to undefined function" to pewnie nie zainstalowałeś rozszerzenia exclamation.gif
FiDO
Dokladnie tak.. zapomnialo mi sie wspomniec, ze tego nie ma w standardzie... sorki cool.gif
broU
tzn. co mam zrobić , żeby to odpalić questionmark.gif
Dabroz
Przeczytać manual?


Eeehh.. jeżeli to Twój serv, to usuń ; przed danym extension, no a jeżeli nie, to musisz prosić admina.
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.