Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal estou com uma duvida, estou querendo enviar dados via POST utilizando cURL para uma página, mas quero que eu seja redirecionado junto ao envio de dados...
Só que não quero fazer isso através de formulários pois preciso que esses dados sejam passados de forma segura e escondida do cliente.
Obrigado a todos pela atenção.
Você quer redirecionar a página junto com os dados do formulário POST?
Usa isso:
header("Location: pagina.php", TRUE, 307);
>
Você quer redirecionar a página junto com os dados do formulário POST?
Usa isso:
header("Location: pagina.php", TRUE, 307);
@Jefrey
Tentei aqui e não consegui, segue o código:
<?php
echo "INICIANDO...<br>";
$url = "http://127.0.0.1/Testes/cURL/recebe.php";
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_AUTOREFERER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_TIMEOUT, 20);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cURL, CURLOPT_HEADER, false);
$dados = array(
"mensagem" => "<h3>enviou e redirecionou</h3>"
);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados);
curl_exec($cURL);
curl_close($cURL);
header("Location: ".$url, TRUE, 307);
?>
Mensagem:
Notice: Undefined index: mensagem in C:\Program Files (x86)\Wamp\www\Testes\cURL\recebe.php on line 3
recebe.php:
<?php
echo $_POST["mensagem"];
?>
Obrigado e abraços.
Para usar o método lá do header() não precisa de curl.
>
Para usar o método lá do header() não precisa de curl.
O problema é que preciso que os dados sejam enviados com o cURL e junto ao envio seja redirecionado, quero saber se isso é possível.
Só que não quero fazer isso através de formulários pois preciso que esses dados sejam passados de forma segura e escondida do cliente.
O método do header() é oculto.
preciso que os dados sejam enviados com o cURL
Você quer ou deve utilizar cURL?
junto ao envio seja redirecionado
Mas é isso que o método do header() faz.
Acho que não entendi direito a pergunta. Explica com uma mini-história, ou algo assim.
Testei o código que você postou e funcionou perfeitamente.
No caso usei ele em curl.php para efetuar a conexão, recebe.php para executar algo "nos bastidores" e pagina.php para ser redirecionada.
Seu problema é que você fez confusão sobre onde redirecionar. Nesse caso, você deveria redirecionar em recebe.php e não em curl.php, afinal, CURLOPT_FOLLOWLOCATION serve para seguir um redirecionamento na página alvo da conexão.
Para ter certeza de que tudo estava correndo nos conformes, gravei a mensagem enviada via POST numa sessão para ser recuperada mais tarde, em pagina.php:
curl.php
error_reporting( E_ALL | E_STRICT );
$strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
session_write_close();
$url = "http://localhost/recebe.php";
$cURL = curl_init();
curl_setopt( $cURL, CURLOPT_URL, $url );
curl_setopt( $cURL, CURLOPT_AUTOREFERER, true );
curl_setopt( $cURL, CURLOPT_COOKIE, $strCookie );
curl_setopt( $cURL, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cURL, CURLOPT_POST, true );
curl_setopt( $cURL, CURLOPT_TIMEOUT, 20 );
curl_setopt( $cURL, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $cURL, CURLOPT_HEADER, false );
curl_setopt( $cURL, CURLOPT_POSTFIELDS,
array( "mensagem" => "<h3>enviou e redirecionou</h3>" ) );
curl_exec( $cURL );
curl_close( $cURL );
recebe.php
<?php
session_start();
$_SESSION['mensagem'] = $_POST["mensagem"];
header("Location: pagina.php", TRUE);
pagina.php
<?php
session_start();
var_dump( $_SESSION );
a opção FOLLOW_LOCATION do cURL faz o que você quer
http://www.php.net/curl_setopt