libreria cURL e cambio URL location

biliards

Nuovo Utente
30 Mag 2008
3
0
0
Ciao a tutti,

ho letto in lungo e in largo ma non ne vengo fuori..
Ho un form (https://domain1/page.html) e vorrei:
* mascherarlo con uno mio (https://domain2/page.html)
* postarci tutti i campi a partire dal mio (https://domain1/page.html)
* ritornare la pagina di ringraziamentore del form originale
(https://domain1/page.html) quando sottometto con il mio form
(https://domain2/page.html)

https://domain1/page.html ha un tag particolare:
<form method="post" id='signup' onsubmit="return validate_form();">
la funzione javascript ritorna un 'true'.
se compilo tutti i campi e sottometto, il browser mi ritorna una pagina di ringraziamento nella stessa pagina: https://domain1/page.html

ho creato il mio form in https://domain2/page.html
questo richiama https://domain2/my.php che posta i campi al form originale con questo codice:

Codice:
 ..
 $url = "https://domain1/page.html";
 $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, count($postdata));
 curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
 curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 $result = curl_exec($ch);
 ..

se compilo tutti i campi del mio form (https://domain2/page.html)
e sottometto, il browser mi ritorna la pagina del form originale
(https://domain1/page.html) con tutti i campi compilati e non la pagina di ringraziamento.
ho testato my.php con più opzioni della libreria facendo più combinazioni delle opzioni seguenti:

Codice:
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
 curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
 curl_setopt($ch, CURLOPT_FAILONERROR, 0);
 curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);

I controllato le opzioni php safe e basedir, gli errori della libreria e le info che ritorna l'url:

Codice:
 .. codice precedente..

 if(!ini_get('safe_mode') && !ini_get("open_basedir")) {
  echo "n safe, n basedir: CURLOPT_FOLLOWLOCATION, true";
 } elseif(!ini_get("open_basedir")) {
  echo "y safe, n basedir";
 } elseif(!ini_get('safe_mode')) {
  echo "n safe, y basedir";
 } else {
  echo "y safe, y basedir";
 }

 $error_no = curl_errno($ch);
 $error_wd = curl_error($ch);
 $url_info = curl_getinfo($ch);

 $result = curl_exec($ch);
 curl_close($ch);
 $strg = "";

 foreach ($url_info as $k => $v) {
  $strg .= "$k = $v; ";
 }

 if ($error_no == 0) {
  $error = '<br/>File uploaded succesfully
('.$error_wd.'['.$error_no.']): '.$strg.'.';
 } else {
  $error = '<br/>File upload error ('.$error_wd.'['.$error_no.']): '.$strg.'.';
 }

 echo $error;

E ottengo che:
* php lavora con safe_mode e open_basedir ON
* il posting via curl non ha errori:
File uploaded succesfully ([0]): url = https://domain1/page.html;
content_type = text/html; http_code = 200; header_size = 393;
request_size = 175; filetime = -1; ssl_verify_result = 0;
redirect_count = 0; total_time = 1.60061; namelookup_time = 0.002403;
connect_time = 0.143216; pretransfer_time = 0.438166; size_upload =
4552; size_download = 51836; speed_download = 32385; speed_upload =
2843; download_content_length = 0; upload_content_length = 4552;
starttransfer_time = 0.589802; redirect_time = 0; .1

Non comprendo dove o cosa devo modificare perchè il browser mi ritorni la pagina di ringraziamento (https://domain1/page.html) quando ho compilato e sottomesso il mio form (https://domain2/page.html).

potete aiutarmi?

Alessandra.
 
in verità è un pò strano, scusa hai provato a testare il tutto sullo stesso dominio ma su pagine differenti, tanto per capire se l'operazione di post avviene e redirect avviene?
 
se con operazione di post intendi che riempie tutti i campi, sì avviene.
la redirezione alla pagina successiva al form non avviene, oggi ho provato anche con CURLOPT_REFERER con valore https://domain1/page.html e poi anche con
https://domain1/ ma senza cambiamenti: il form originale viene riempito ma non passo alla pagina dei ringraziamenti.
credo che anche la funzione onsubmit compresa nel tag form sia complice del fatto che non ci sia la redirezione alla pagina successiva, o comincio mi sbaglio?
devo postare i link dei form originale e creato da me?
 
Ultima modifica:

Discussioni simili