[ MilosDj @ 22.10.2009. 14:04 ] @
Zelim da postignem redirekciju uz $_SERVER['REQUEST_METHOD']==POST U pitanju je kucni comp, Vista SP2 i xampplite sa mysql i apacem. Ako koristim header("Location: http://$host/$path"); zavrsim na stranici ali uz $_SERVER['REQUEST_METHOD']==GET Prva varijanta je pravljenje linka sa praznom formom: Code: <form action='{$gde}' method='post'> <input type='submit' name='{$var}' value='Submit' title='{$title}' /> </form> Malo ruzno, ali radi. Jedina mana je sto korisnik mora da klikne na Submit dugme da bi otisao na zeljenu stranicu uz POST. (Obican link <a href /a> radi redirekciju uz GET.) Zelim da izbegnem to Submit kliktanje. Moze uz java scropt koji automatski "klikne". Nije lose, ali daleko od onoga sto ja zelim. Googlam i nadjem 2 opcije: cURL i fsockopen() Tu nastaju problemi koji mi uopste nisu jasni. Ovo sam nasao kao primer za POST + redirect uz pomoc cURL: Code: $pw='test:test'; $l='http://localhost/www/sajt/user/user.php'; $rf='http://localhost/www/sajt/login.php'; curl_setopt($cc, CURLOPT_URL, $l); curl_setopt($cc, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($cc, CURLOPT_REFERER, $rf); curl_setopt($cc, CURLOPT_FOLLOWLOCATION, TRUE); // valjda za redirekciju curl_setopt($cc, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); curl_setopt($cc, CURLOPT_USERPWD, $pw); curl_setopt($cc, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($cc, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($cc, CURLOPT_POST,TRUE); $po="key1=value1&key2=value2"; curl_setopt($cc, CURLOPT_POSTFIELDS,$po); $result=curl_exec($cc); if($result==false){e("BAD URL: {$l}");} if($result!=0) { echo 'Info: '; print_r(curl_getinfo($cc)); echo '<br />'; echo 'Errno: ', curl_errno($cc), '<br />'; echo 'Error: ', curl_error($cc), '<br />'; echo "<br />$l"; } curl_close($cc); Pitanja: Xampplite nudi .htaccess zastitu. to sam uradio vise zezanja radi i stavio test test user i pass. Sa obicnim linkom ili da post-form linkom redirekcija radi bez problema. Sa cURL POSTom sam imao 401 Error Access denied. Naravno, kad u cURL stavim userpass test:test, onda prolazi. 1. Kako i zasto cURL nije u stanju da prodje na zeljenu stranicu? 2. Kako da podesim cURL da se ponasa identicno kao <form action='...> i da ne trazi user:pass? 3. Gore navedeni kod ne radi. Nema greske, nema errora! Samo NE radi. Ostanem na belom i praznom login.php umesto da me prebaci na user.php. Kako, zasto, sta moram da uradim sa xampom da proradi redirekcija? 4. Ako stavim CURLOPT_RETURNTRANSFER, FALSE; javlja Error 404. Object not found! The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Zasto? Od muke sam probao da napravim istu POST redirekciju sa fsockopen ali tu mi stalno javlja: Warning: fsockopen() [function.fsockopen]: unable to connect to http://localhost:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) Ja sam zbunjen i ne znam ni gde ni gde ni kako vise da trazim resenje. [Ovu poruku je menjao MilosDj dana 22.10.2009. u 15:39 GMT+1] |