Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zwrócony nagłówek
Forum PHP.pl > Forum > PHP
ennics
czesc,
wykorzystuje curl do odczytania nagłówka wysyłanego przez stronę,
niestety nie wiem jak zwrócony nagłówek poddać dalszej obróbce...
np. przez preg_match chcę wyciągnąć ID sesji
  1. <?php
  2.  
  3. $ch = curl_init();
  4. $user_agent = &#092;"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\";
  5. $url = &#092;"http://www.goo.pl/RM/c/RI_CME.GBL\";
  6. $params = &#092;"userid=enx&pwd=y76yghjy!&postDataBin=y\";
  7.  
  8.     curl_setopt($ch, CURLOPT_URL, $url);
  9.     curl_setopt($ch, CURLOPT_HEADER, 1);
  10.     curl_setopt($ch, CURLOPT_NOBODY, 1);
  11.  
  12. // 1 sposób:
  13.     //$result = curl_exec($ch);
  14.     $result = preg_match(&#092;"/ldcw010-10001-PORTAL-PSJSESSIONID/\", curl_exec($ch), $matches); 
  15.  
  16. // 2 sposób
  17.  
  18.     $result = curl_exec($ch);
  19.     $result = preg_match(&#092;"/ldcw010-10001-PORTAL-PSJSESSIONID/\", $result, $matches);
  20.  
  21. print_r($matches);
  22. curl_close($ch);
  23.  
  24. ?>

1 i 2 sposób nie działają z prostej przyczyny że curl_exec w przypadku ustawienia CURLOPT_NOBODY zwraca 1...
jak zwracany jest nagłówek ? jak mam wykonać na nim jakieś operacje ?
ennics
czytałem manual winksmiley.jpg
ale tak jak napisałem powyżej
Cytat
1 i 2 sposób nie działają z prostej przyczyny że curl_exec w przypadku ustawienia CURLOPT_NOBODY zwraca 1.

jeśli ustawisz CURLOPT_NOBODY, 0 jako rezultat zostanie zwrócona sekcja <html>...</html> ( w przypadku http ), CURLOPT_RETURNTRANSFER nie zwraca nagłówka!

problem udało mi się częściowo rozwiązać (manula był wciągający)
  1. <?php
  2.  
  3.  
  4. function header_response( $ch, $str )
  5. {
  6.   $length = strlen( $str );
  7.   print $length; 
  8. }
  9.  
  10. $ch = curl_init();
  11.  
  12. switch ( $_SESSION['status'] )
  13. {
  14.  
  15.   default: // snip: ldcw010-10001-PORTAL-PSJSESSIONID
  16.     curl_setopt($ch, CURLOPT_URL, $url);
  17.     curl_setopt($ch, CURLOPT_HEADER, 1);
  18.     curl_setopt($ch, CURLOPT_NOBODY, 1);
  19.     curl_setopt($ch, CURLOPT_HEADERFUNCTION, &#092;"header_response\");
  20.     
  21.     $result = curl_exec($ch);
  22.  
  23.     $_SESSION['status'] = 'snip_PS_TOKEN';
  24.   break;
  25. }
  26.  
  27. curl_close($ch);
  28.  
  29. ?>

po wykorzystaniu CURLOPT_HEADERFUNCTION zwraca nagłówek... ale tylko pierwszą linię ;/ HTTP/1.1 500 Internal Server Error 36

nie wiem jak zrobić żeby zwracało pełny nagłówek...
ma ktoś jakieś pomysły ?

szukałem po sieci i znalazłem obiektowe podejście do problemu

  1. <?php
  2.  
  3. curl_setopt ($ch, CURLOPT_HEADERFUNCTION, array(&$this,&#092;"curl_header_read\"));
  4.  
  5. ?>


próbowalem to wykorzystać...

  1. <?php
  2.  
  3. class firefrost
  4. {
  5.   public function __construct()
  6.   {
  7.     $this -> ch = curl_init();
  8.  
  9.     switch ( $_SESSION['status'] )
  10.     {
  11.  
  12.       default: // snip: ldcw010-10001-PORTAL-PSJSESSIONID
  13.         curl_setopt($this -> ch, CURLOPT_URL, $this -> url);
  14.         curl_setopt($this -> ch, CURLOPT_HEADER, 1);
  15.         curl_setopt($this -> ch, CURLOPT_NOBODY, 1);
  16.         curl_setopt($this -> ch, CURLOPT_HEADERFUNCTION, array($this, 'read_header')); // teraz jest ok
  17.       break;
  18.     }
  19.     curl_close($this -> ch);
  20.   }
  21.  
  22.   public function read_header( $ch, $string ) 
  23.   {
  24.     $len = strlen( $string );
  25.     echo &#092;"HEADER: GOT $stringn\";
  26.     return $len;
  27.   }
  28. }
  29.  
  30. $nowy = new firefrost();
  31.  
  32. ?>


ale teraz kiedy wywołuje CURLOPT_HEADERFUNCTION z parametrem array to apache się wykrzacza.

edit: sorry, działa, jebnąłem się dając inną nazwę funkcji winksmiley.jpg LOL
rolnix
Wg mnie zwraca jedną, bo przy błędzie 500 chyba tylko jedna jest zwracana... Chyba.
ennics
zwracany jest cały nagłówek, obojętnie jaką odpowiedź otrzyma przeglądarka

Kod
HTTP/1.1 500 Internal Server Error HTTP/1.1 500 Internal Server Error
Date: Sat, 16 Apr 2005 15:44:00 GMT Date: Sat, 16 Apr 2005 15:44:00 GMT
Server: WebLogic XMLX Module 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 with CR174605 Server: WebLogic XMLX Module 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 with CR174605
Content-Length: 883 Content-Length: 883
Content-Type: text/html Content-Type: text/html
Set-Cookie: ldcw020-10001-PORTAL-PSJSESSIONID=ChyAE5DNCp92eBuCSMIoLR9gmgnSEigb!-641607186; path=/ Set-Cookie: ldcw020-10001-PORTAL-PSJSESSIONID=ChyAE5DNCp92eBuCSMIoLR9gmgnSEigb!-641607186; path=/
Connection: Close Connection: Close
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.