Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wysyłanie danych metodą post przez skrypt php
Forum PHP.pl > Forum > PHP
kukix
Witam.
Potrzebuje wysłać dane do innego serwera metodą post.. ale przez skrypt php... nie przez formularz <form> ..

w jaki sposób coś takiego zrobić?

Jakich funkcji użyć.. ?
Będe wdzieczny za wszelkie wypowiedzi..

P.S. Potrzebne jest mi to do integracji z systeme eCard.. musze syłać dane za pomocą połączenia HTTP metodą POST.. i nastepnie odebrać wynik..
wlamywacz
cURL
kukix
Znalazłem w internecie taką funkcje:

  1. <?php
  2. function p24_weryfikuj($p24_id_sprzedawcy,$p24_session_id,$p24_order_id,$p24_kwota="") {
  3.    $header  = "POST /transakcjanossl.php HTTP/1.1r\n";
  4.    $header .= "Host: secure.przelewy24.plr\n";
  5.    $header .= "Content-Type: application/x-www-form-urlencodedr\n";
  6.  
  7.    $fp = fsockopen ("secure.przelewy24.pl", 80, $errno, $errstr, 30);
  8.    $P[] = urlencode("p24_id_sprzedawcy")."=".urlencode($p24_id_sprzedawcy);
  9.    $P[] = urlencode("p24_session_id")."=".urlencode($p24_session_id);
  10.    $P[] = urlencode("p24_order_id")."=".urlencode($p24_order_id);
  11.    if($p24_kwota != "") $P[] = urlencode("p24_kwota")."=".urlencode($p24_kwota);
  12.    $post = join("&",$P);
  13.  
  14.    $req .= "Content-Length: ".strlen( $post )."r\nr\n";
  15.    $req .= $post;
  16.  
  17.    if (!$fp) {
  18.      die ("CONNECTION ERROR");
  19.    } else {
  20.      fputs ($fp, $header . $req);
  21.      $res = false;
  22.      while (!feof($fp)) {
  23.        $line = ereg_replace("[\nr]","",fgets ($fp, 1024));
  24.        if($line != "RESULT" and !$res) continue;
  25.        if($res)$RET[] = $line;
  26.        else $res = true;
  27.      }
  28.    }
  29.    fclose ($fp);
  30.    return $RET;
  31. }
  32. ?>


jest to funkcja konkurencyjnej firmy do ecard... jednak niebardzio wiem, co ta funkcja robi.. wiemm, że wysyła metoda post dane..
nie wiem, po co tutaj funkcja fputs() .. po cvo tutaj wrzucanie danych do pliku?
pyro
nie dane do pliku, do polaczenia za pomoca http
kukix
Dla potomności:
  1. <?php
  2. function moja_funkcja($wartosc1, $wartosc2, $wartosc3, $wartosc4) {
  3.    $P = array(); $RET = array();
  4.    $url = "https://ADRES STRONY";
  5.    $P[] = "zmiena1=".$wartosc1;
  6.    $P[] = "zmiena2=".$wartosc2;
  7.    $P[] = "zmiena3=".$wartosc3;
  8.    $P[] = "zmiena4=".$wartosc4;
  9.    //itd..
  10.  
  11.    $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
  12.    $ch = curl_init();
  13.    curl_setopt($ch, CURLOPT_POST,1);
  14.    if(count($P)) curl_setopt($ch, CURLOPT_POSTFIELDS,join("&",$P));
  15.    curl_setopt($ch, CURLOPT_URL,$url);
  16.    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  17.    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  18.    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  19.    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  20.    $result=curl_exec ($ch);
  21.    curl_close ($ch);
  22.  
  23.    return $result;
  24. }
  25. ?>


na początku podajem yadres www.. może być https://.. dalej zmienne, które wysyłamy do serwera... i na samym dole optrzymujemy rezultat.. możemy z nim robić co chcemy.. rozbijac na linie itd.. pozdr..
P.S. Kod który podalem w poscie wyżej, to jakieś kombinacje alpejscie z fputs itd.. ten drugi wg mnei jest lepszy.. bardziej uniwersalny
kubek15
a jeżeli ja mam taki formularz
  1. <form action="robbery.php" method="POST">
  2. <div>
  3. <h2>Okrążenie treningowe</h2>
  4. <p class="tdnp">&nbsp;</p>
  5.  
  6. <p class="tdnp">Ten trening będzie kosztował Cię 10$.</p>
  7. <p>Czas Treningu (już wykorzystano 00:00:00): <select name="mjz" size="1" class="input"><option value="600">10 minuty</option><option value="1200">20 minuty</option><option value="1800">30 minuty</option><option value="2400">40 minuty</option><option value="3000">50 minuty</option><option value="3600">60 minuty</option><option value="4200">70 minuty</option><option value="4800">80 minuty</option><option value="5400">90 minuty</option><option value="6000">100 minuty</option><option value="6600">110 minuty</option><option value="7200">120 minuty</option></select><input type="submit" class=input value="Wykonaj!"></p><p>Trenuj na okrążeniach testowych, aby zdobyć doświadczenie! Zaimponuj Twojemu sponsorowi swoim występem tak aby, wydał na Ciebie i Twój sprzęt troszkę swoich pieniędzy!</p></div>
  8. </form>

to co mam wpisać to tego skryptu co jest w poscie wyżej?
dsk
  1. <?php
  2. function post($url, $fields = array())
  3. {
  4.   $ch = curl_init();
  5.   curl_setopt($ch, CURLOPT_POST,1);
  6.   curl_setopt($ch, CURLOPT_POSTFIELDS, join("&",$fields));
  7.   curl_setopt($ch, CURLOPT_URL,$url);
  8.   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  9.   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  10.   $result=curl_exec ($ch);
  11.   curl_close ($ch);
  12.  
  13.   return $result;
  14. }
  15.  
  16. $fields['mjz'] = 600;
  17. $fields['argument2'] = 'asdasd';
  18. $fields['argument5'] = 'qqw111';
  19.  
  20. $res = post('robbery.php', $fields);
  21. ?>

albo zmienna fields jako tekst i przekazywac "mjz=600&argument2=asdasd&argument5=qqw111" - wtedy bez joina
kubek15
nie działa mi to niewiem czemu. Ja chcę tylko przesłać argument dla wartości 600 inne mnie nie interesują. Gdzie mam wpisac link?

prosze napiszcie jak bo bardzo mi na tym zależy
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.