darksign Posted October 8, 2009 Report Share Posted October 8, 2009 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; } Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 8, 2009 Report Share Posted October 8, 2009 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. Quote Link to comment Share on other sites More sharing options...
darksign Posted October 8, 2009 Author Report Share Posted October 8, 2009 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.