T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
24th October

PHP POST Request – brez uporabe cURL knjižnice

cURL je fajn knjižnica, ampak a ne bi bilo še boljše kreirati / emulirati web form POST zahtevek z uporabo čistega PHP-ja, torej brez zunanjih knjižnic kot je cURL. Zakaj bi se trudili? Ker si s tem povečamo možnosti, da bo skripta delovala na vseh (veliki večini) strežnikov.

Kreirati POST zahtevek je v resnici zelo preprosto. Najprej kreiramo URL iz naših podatkov (v našem primeru array), nato določimo pravilne headerje v katere shranimo tudi velikost naših podatkov. Brez tega parametra (Content-Length) POST zahtevek ne bo deloval! Sedaj vse naše nastavitve spravimo v takšen array oz. v takšno strukturo, da bo znala funkcija stream_context_create prebrati naše nastavitve.

Sedaj nam ostane samo še klic spletne strani kamor pošljemo naš POST zahtevek in nato branje podatkov, ki nam jih spletna stran vrne. To je vse.

PHP:
  1. function emulatePostRequest($data, $url) {
  2.         // Go trough data and unset empty params
  3.         foreach($data as $key => $param) {
  4.             if (empty($param)) {
  5.                 unset($data[$key]);
  6.             }
  7.         }
  8.    
  9.         // Create data
  10.         $data = http_build_query($data);
  11.        
  12.         // Headers
  13.         $headers  = "Content-type: application/x-www-form-urlencoded\r\n";
  14.         $headers .= "Content-Length: " . strlen($data) . "\r\n"
  15.                                                                
  16.         // Create stream
  17.         $options = array('http' => array('method'  => 'POST',
  18.                                          'header'  => $headers,
  19.                                          'content' => $data)
  20.                          );
  21.         $context = stream_context_create($options);
  22.        
  23.         // Get the result
  24.         $result = file_get_contents($url, false, $context);
  25.        
  26.         // Return page content
  27.         return $result;   
  28. }

Dodatne informacije:

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. PHP GET Request – Basic Authorization – Chunk data
  2. PHP – namestitev SQL Server 2005 knjižnice (SQLSRV extension)
  3. Rezanje teksta po koncu besede – php funkcija – substr – cut text – UTF-8
  4. PHP – branje Excel (.xls) datoteke – Excel UTF8 branje
  5. Napiši svoj PHP error handler (obdelovalec napak:P)
  6. Konverzija CP1250, ISO-8859-1 baze v UTF-8 – šumniki UTF-8 – cp1250 to utf8
  7. Preprosta skripta – kreiranje Excel datoteke iz PHP tabele/array
  8. Povezava na MSSQL 2005 z uporabo PHP mssql knjižnice (MSSQL, PHP MSSQL, Windows, Apache)
  9. MySQL kreiranje tabele s SELECT stavkom
  10. Apple Safari po enem tednu uporabe

Dodaj komentar