tamtaram Posted October 22, 2007 Report Share Posted October 22, 2007 es ar curl no savas http://mypage/ aizpostoju uz http://somepage/ failu: $postdata = array(); $postdata['file'] = "@file.txt"; $url = 'http://somepage/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); $response = curl_exec($ch); tālāk http://somepage/ varbūt apstrādā viņu, varbūt kkas tomēr nepatīk un izmet whatever kādu infu, kuru es postējot caur http://mypage/, protams, neredzu. jautājums tātad tāds, kā tad lai es savācu to, ko http://somepage/ man tur ir uzrakstījis? Link to comment Share on other sites More sharing options...
bubu Posted October 22, 2007 Report Share Posted October 22, 2007 Paskaties uz curl_setopt funkcijas CURLOPT_RETURNTRANSFER opciju, t.i. ko tā nozīmē. Link to comment Share on other sites More sharing options...
tamtaram Posted October 22, 2007 Author Report Share Posted October 22, 2007 (edited) Redzu, ko tā nozīmē. Un tagad arī redzu, ka vaina ir konkrētajā http://somepage/ lapā. Tā neatgriež vai neļauj atgriezt neko pat tikai plikas CURLOPT_URL gadījumā. Iespējams, ka viņi čeko vēl papildus hederus kkādus. Iedevu viņiem vēl brauzeri, bet tāpat neko nedod atpakaļ. Kopumā ideja ir tāda: griežās softs ar failu augšuplādi, viņš tos apskatās un pasaka, kas tad tur īsti ir. Šim softam caur attālinātu formu var padot failus, formai var piekļūt ar jebkuru useragentu, bet softs akceptē tikai tos failus, kuri nākuši no viņam vēlāmā useragenta izmantotās formas. Ja brauzerī nomaina useragentu, tad ir iespējams augšuplādēt, bet katrs lietotājs katru reizi nemainīs pārlūkprogrammas iestatījumus, tādēļ ar curl useragents jānofeiko. Augšuplādētais fails pirms sūtīšanas tiek vēl softvāriski apstrādāts un pieglabāts uz kastes un tad ar curl padots softam. Bet šinī gadījumā atpakaļ nekas nenāk. Edited October 22, 2007 by tamtaram Link to comment Share on other sites More sharing options...
andrisp Posted October 22, 2007 Report Share Posted October 22, 2007 Paskaties kādus headerus sūta pārlūks, kad viss strādā, un nokopē tos 1:1 (nu daudzmaz 1:1) iekš CURL. Link to comment Share on other sites More sharing options...
tamtaram Posted October 22, 2007 Author Report Share Posted October 22, 2007 (edited) Tāpat neko nedod pretī, pat pēc pilnīgas vitālo headeru iebarošanas. Nu izņemot errorus. Strādājošā variantā viņš headerī pārsūta info arī par to failu, piemēram: Content-Type: multipart/form-data; boundary=---------------------------22577280756664 Content-Length: 220 -----------------------------22577280756664 Content-Disposition: form-data; name="file"; filename="file.mp3" Content-Type: application/octet-stream #!MP3 <‘ѕfy -----------------------------22577280756664-- Curl variantā tā softs beidzot kaut ko izmet pretī, precīzāk, apacis izmet erroru: Error 413 - Request entity too large! Izņemot 'Content-Length: 220' no headeriem, errors pazūd, bet strādājošā variantā headeros tiek padots daudz reizes lielāks 'Content-Length' un programma apstrādā daudz reizes lielākus failus. Varbūt ir kāds alternatīvs variants kā nofeikot pārlūkprogrammu kurā tikai veikts POST? Edited October 22, 2007 by tamtaram Link to comment Share on other sites More sharing options...
blackhalt Posted October 23, 2007 Report Share Posted October 23, 2007 Apmēram tā: <?php $file = '0000000000000.txt'; $submit_url = 'http://dfgfdggf.com/ffdgfdgf.php?dir=hvz'; $formvars = array( 'poga'=> 'Augshuplaadeet', 'file' => '@'.realpath($file) ); $ch = curl_init($submit_url); curl_setopt($ch, CURLOPT_USERAGENT, 'Hakorz'); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); curl_setopt($ch, CURLOPT_REFERER, 'http://blackhalt.wordpress.com/'); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $formvars); echo $pnp_result_page = curl_exec($ch); curl_close ($ch); ?> Link to comment Share on other sites More sharing options...
ray Posted October 23, 2007 Report Share Posted October 23, 2007 Man tāds mazs offtopic. Ko dara ar "curl" un kur viņu reāli pielieto.? Lasīju dokumentācijā, ka tas atļauj pieslēgties un komunicēt ar dažādiem serveru un protokolu tipiem, bet lielāka skaidrība nekļuva par to kas tas par zvēru un ko tas ēd :/ Link to comment Share on other sites More sharing options...
andrisp Posted October 23, 2007 Report Share Posted October 23, 2007 Tas ļauj pašam kabināt kopā un sūtīt raw datus pa dažādiem protokoliem dažādiem serveriem. Pēc idejas, izlasot šo, visam vajadzētu būt skaidram: :) PHP supports libcurl, a library created by Daniel Stenberg, that allows you to connect and communicate to many different types of servers with many different types of protocols. libcurl currently supports the http, https, ftp, gopher, telnet, dict, file, and ldap protocols. libcurl also supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading (this can also be done with PHP's ftp extension), HTTP form based upload, proxies, cookies, and user+password authentication. php.net/curl Palasi arī http://en.wikipedia.org/wiki/CURL Link to comment Share on other sites More sharing options...
tamtaram Posted October 23, 2007 Author Report Share Posted October 23, 2007 Paldies, blackhalt. Tavs piemērs līdzēja. Īstenībā viņi tur nemaz nežorīja baigos headerus, pietrūcis bija tikai CURLOPT_FOLLOWLOCATION. Jāpētī ko vēl no tā curl var izspiest. Link to comment Share on other sites More sharing options...
Recommended Posts