Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
Naprosto to nechápu, ale nepodailo se mi najít dokumentaci formátu požadavku POST, který má typ multipart/form-data.
Pomohl jsem si firebugem, ale nepomohl jsem si moc, protože moje dílo nefunguje. Zdrojový kód: $url="http://nejaka.url"; $url = parse_url($url); $boundary="-----------------------------5820148351663"; //Tohle jsem pochopil jako rohlížečem geneované dělíto $data=array( "subor" => array("bleee","1.png","image/png"), "upload" => "ok", ); $request=""; foreach($data as $name => $value) { $request.="-----------------------------5820148351663\r\n"; //DELITKO NA ZACATEK if(is_array($value)){ //Je soubor $request.="Content-Disposition: form-data; name=\"$name\"; filename=\"{$value[1]}\"\r\n"; $request.="Content-Type: {$value[2]}\r\n\r\n"; $request.=$value[0]."\r\n"; } else { $request.="Content-Disposition: form-data; name=\"$name\"\r\n\r\n$value\r\n"; //normalni post } } $request.="$boundary--"; //konec, pokud dobre chapu, obsahuje delitko a dve pomlcky $request="Content-type: multipart/form-data; boundary=$boundary\r\n"."Content-length: ". strlen($request) ."\r\n\r\n".$request; //puvodne sem to cpal do hlavicek, ale firebug to ma v tele. /**Nasleduje odesilani. Tam chyba asi neni**/ $host = $url['host']; $path = $url['path']; $fp = fsockopen($host, 80); fputs($fp, "POST ".$path." HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Referer: $referer\r\n"); fputs($fp, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $request); while(!feof($fp)) { $result .= fgets($fp, 128); } fclose($fp); A celé tělo požadavu tedy vypadá takto: Content-type: multipart/form-data; boundary=-----------------------------5820148351663 Content-length: 385 -----------------------------5820148351663 Content-Disposition: form-data; name="subor"; filename="1.png" Content-Type: image/png bleee -----------------------------5820148351663 Content-Disposition: form-data; name="upload" ok -----------------------------5820148351663 Content-Disposition: form-data; name="potvrd" Nahrát -----------------------------5820148351663-- |
||
Theo. Profil * |
#2 · Zasláno: 6. 7. 2011, 18:14:33
... a co to má původně dělat ?
|
||
Darker Profil |
#3 · Zasláno: 6. 7. 2011, 20:21:21
Cílem je odeslat POST v multipart formátu tak aby se data řádně zpracovala.
Živá ukázka: http://jmareda.tk/roboti/uploader.php Výstup je dělen na tři části dělícími čarami. První část je kód požadavku tak, jak byl odeslán. Druhá část zobrazuje zdrojový kód odpovědi (bez dekódování). Třetí část je jen text zkopírovaný z firebugu. |
||
Časová prodleva: 14 let
|
0