Autor | Zpráva | ||
---|---|---|---|
wise Profil |
#1 · Zasláno: 11. 2. 2010, 21:12:58 · Upravil/a: wise
Zdravím,
stáhnul jsem si skript ohledně posílání http požadavku postem. <?php //extract data from the post extract($_POST); //set POST variables $url = 'http://www.page.com'; $fields = array( 'dsss'=>urlencode("sdasd") ); //url-ify the data for the POST foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string,'&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); //execute post $result = curl_exec($ch); //close connection curl_close($ch); ?> Když ale po spuštění souboru s tímto kódem, tak se stane, že mě to přesměruje na danou stránku a vyplní se inputy hodnotama, které jsem zadal v poli $fields. Ale žádný post se nepošle. Má představa o funkčnosti curl v tomto případě je taková, že např. kliknu na tlačítko a v pozadí mi to odešle post na danou stránku, která tento požadavek přijme a zpracuje. Nebo jak tedy funguje curl? Popř. jak se dá provést to, co jsem zmínil výše? Děkuji za odpověďi a rady. |
||
FT Profil * |
#2 · Zasláno: 11. 2. 2010, 21:48:26
Prostuduj si PHP manual ;)
tady je příklad který funguje přesně jak si představuješ $ch = curl_init($url); //POKUD CHCES VRATIT INFO HLAVICKU curl_setopt ($ch, CURLOPT_HEADER, 0); //NASTAVIS ZE CHCES ODESLAT DATA curl_setopt($ch,CURLOPT_POST,1); //VLOZIS JAKE DATA SE ODESILAJI METODOU POST $var = "jmeno=xxx&heslo=xxx"; curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); //POKUD CHCES PRACOVAT S VYSLEDNOU STRANKU NASTAV NA 1 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //DO PROMENE NACTES VYSLEDNOU STRANKU A UKONCIS CURL $vystup = curl_exec ($ch); curl_close ($ch); //DALE UZ PRACUJES POUZE S PROMENOU echo $vystup; |
||
wise Profil |
#3 · Zasláno: 11. 2. 2010, 21:51:57
Takže v proměnný výstup budu mít stránku, která je už zpracovaná? (nezkoušel jsem ještě)
např. pokud by bylo if(isset($_POST['jmeno'])) echo "yep"; tak dostanu do $vystup stránku s yep? Díky moc :) |
||
kvoky Profil |
#4 · Zasláno: 11. 2. 2010, 23:03:41
wise:
Jo, to bude fungovat. Ale je potřeba si uvědomit, že odeslání post požadavku se neděje "někde na pozadí" ale na serveru. Takže když vstoupíš přes curl na nějakou stránku, která loguje ipiny, tak se zapíše ip adresa tvýho hostingu na kterým ti ten script běží a ne tvoje jako uživatele. |
||
wise Profil |
#5 · Zasláno: 12. 2. 2010, 00:18:19
jj to mi hlavu nedělá :) A co spouštění pomocí ajaxu?
|
||
AM_ Profil |
#6 · Zasláno: 12. 2. 2010, 10:14:28
wise:
„A co spouštění pomocí ajaxu?“ co je předmětem otázky? jak otevřít stránku AJAXem? protože s cURL má AJAX pramálo společného. |
||
wise Profil |
#7 · Zasláno: 12. 2. 2010, 11:55:13
Měl jsem namysli, že když to vemu konkrétně, po kliknutí na tlačítko se ajaxem zavolá soubor, ve kterém je curl post.
Je to možné taky? |
||
AM_ Profil |
#8 · Zasláno: 12. 2. 2010, 12:08:52
Pochopitelně, z hlediska PHP je úplně jedno, jestli si o něj žádá přímo prohlížeč, nebo JavaScript - PHP to vlastně ani nemá šanci spolehlivě rozeznat.
|
||
Časová prodleva: 12 dní
|
|||
wise Profil |
#9 · Zasláno: 24. 2. 2010, 00:19:56
díky moc pánové :)
|
||
wise Profil |
#10 · Zasláno: 24. 2. 2010, 00:21:15 · Upravil/a: wise
btw. jen jsem použil tento skript:
$init = curl_init(); $url = "http://www.page.com"; $text = array("ahoj" => "člověče"); curl_setopt( $init, CURLOPT_URL, $url ); curl_setopt( $init, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt( $init, CURLOPT_POST, 1 ); curl_setopt( $init, CURLOPT_POSTFIELDS, $text ); $exec = curl_exec( $init ); echo $exec |
||
Časová prodleva: 14 let
|
0