Jump to content
php.lv forumi

php curl post nepareizi nododas


darksign

Recommended Posts

man tāda problēma, ka jānodod dati ar post datiem. Interesanti ir tas, ka to pašu funkciju izmantojot nododot datus uz kādu no saviem serveriem, un tur izprintējot $_POST masīvu, tur viss ir tā kā vajag, bet uz cita servera dati nenododas. Turklāt tam citam serverim esmu kā klients, un apskatīties kas viņā pusē notiek nevaru, varu tikai redzēt vai ir atbilde. Uz mērķa serveri darbojas tomcat .. un java.

Uztaisot parastu html formu ar post metodi un nospiežot submit, dati nododas un ir ok, atbildē ir html kods. Bet ja tai pašai html formai uzlieku get (t.i. nenododu post datus), tad rezultātā atgriež tukšu lapu.

 

Ar php un curl, dodot post datus, man vienmēr ir tukša lapa. Kāds ir saskāries ar šādu problēmu? Kādas idejas? Ko es vai tas curl dara savādāk nekā pārlūkprogramma?

p.s. pārbaudīju, un cik sapratu, ka tam serverim ir pilnīgi po, vai tur ir browsera parametri vai nav.. viņš viņus ignorē, un pie tam tā servera daļa ir vairākus gadus atpakaļ rakstīta (varbūt kāds senais guru atcerās kādas javai problēmas ar post datu saņemšanu.. kur tur ir jāpievērš uzmanība =] ).

 

Te ir mana funkcija kuru izmantoju, un liekas ka tur kļūdu nav, jo uz citu serveri, kur ir php nododas post dati bez problēmām:

 

function get_curl($url, $postfields=array())
{

  if (!function_exists('curl_setopt_array'))
  {
     function curl_setopt_array(&$ch, $curl_options)
     {
         foreach ($curl_options as $option => $value)
         {
             if (!curl_setopt($ch, $option, $value))
             {
                 return false;
             }
         }
         return true;
     }
  }

  $options = array(
       CURLOPT_RETURNTRANSFER => true,     // return web page
       CURLOPT_HEADER         => false,    // don't return headers
       CURLOPT_FOLLOWLOCATION => true,     // follow redirects
       CURLOPT_ENCODING       => "",       // handle all encodings
       CURLOPT_USERAGENT      => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)", // who am i
       CURLOPT_AUTOREFERER    => true,     // set referer on redirect
       CURLOPT_CONNECTTIMEOUT => 30,      // timeout on connect
       CURLOPT_TIMEOUT        => 60,      // timeout on response
       CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects

       //CURLOPT_HTTPHEADER      => array('Content-Type: application/x-www-form-urlencoded'),
       CURLOPT_REFERER      => 'http://localhost/test.html', //tas pats arii nododas, kad taisu no browsera
       CURLOPT_SSL_VERIFYPEER      => false,     //iztiekam bez ssl
       CURLOPT_SSL_VERIFYHOST      => false,
       CURLOPT_POST      => true,
       CURLOPT_POSTFIELDS      => $postfields,
   );

   $ch      = curl_init( $url );
   curl_setopt_array( $ch, $options );   //tikai no php 5 un jaunaakas versijas
   $content = curl_exec( $ch );
   $err     = curl_errno( $ch );
   $errmsg  = curl_error( $ch );
   $header  = curl_getinfo( $ch );
   curl_close( $ch );

   $header['errno']   = $err;
   $header['errmsg']  = $errmsg;
   $header['content'] = $content;
   return $header;
}

Link to comment
Share on other sites

Ja ir iespēja uzliec kādu trafika logotāju pa vidu (ja nav SSL šoreiz, tad problēmu sacapturot trafiku nevajadzētu būt) un paanalizē, kas kur un kā notiek. Vai nav tā ka serveris atbild ar kādu no 30X redirektiem 301,302,303 uz īsto rezultāta lapu? (Caur pārlūku pat nepamanīsi, ka pārlūks ticis redirektēts, ja neapskatīsies visu http savienojumu). Curl varbūt, ka neseko redirektiem.

Tikko ieraudzīju, ka Tev uzstādīts parametrs CURLOPT_FOLLOWLOCATION => true, // follow redirects līdz ar to nesekošanai nevajadzētu notikt.

 

Tomēr papēti to trafiku ja vari.

Link to comment
Share on other sites

Tur redirekts nenotiek (http_code = 200), un tieši tā, ja tas būtu, tad manējais sekotu līdzi.

Masīvs ko atgriež funkcija:

 

Array ( 
[url] => https://mans_target_serveris/ 
[http_code] => 200 
[header_size] => 127 
[request_size] => 415 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 0.16 
[namelookup_time] => 0 
[connect_time] => 0.005 
[pretransfer_time] => 0.153 
[size_upload] => 1477 
[size_download] => 0 
[speed_download] => 0 
[speed_upload] => 9231 
[download_content_length] => 0 
[upload_content_length] => 1477 
[starttransfer_time] => 0.159 
[redirect_time] => 0 
[errno] => 0 
[errmsg] => 
[content] => 
) 

 

p.s. vispār jau tas ir pa SSL kanālu, līdz ar snifošanai nav īsti jēgas.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...