Foros del Web » Programando para Internet » PHP »

¿Es posible redireccionar con curl?

Estas en el tema de ¿Es posible redireccionar con curl? en el foro de PHP en Foros del Web. Hola Quiero mandar via POST unos datos a la URL www.url2.com El caso es que no quería usar formularios, así que pensé en curl, pero ...
  #1 (permalink)  
Antiguo 14/07/2013, 06:22
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 19 años, 5 meses
Puntos: 36
¿Es posible redireccionar con curl?

Hola

Quiero mandar via POST unos datos a la URL www.url2.com

El caso es que no quería usar formularios, así que pensé en curl, pero no sé exactamente cómo hacer lo que quiero hacer.

Yo desde el script www.url1.com/script.php hago:
Código PHP:
curl_setopt($chCURLOPT_URL'www.url2.com');
        
curl_setopt($chCURLOPT_POSTtrue);
        
curl_setopt($chCURLOPT_POSTFIELDS"peticion=$peticion");

        
//Set some settings that make it all work :)
        
curl_setopt($chCURLOPT_HEADERFALSE); 
Los datos los manda correctamente, pero me carga la página www.url2.com dentro de www.url1.com y yo lo que quiero es que me envíe a www.url2.com directamente, como haría un formulario normal y corriente.

¿Se puede hacer con curl u otra librería?

Saludos.
  #2 (permalink)  
Antiguo 14/07/2013, 08:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: ¿Es posible redireccionar con curl?

Trata esta lectura a ver si te ayuda http://www.forosdelweb.com/f18/aport...equest-724214/

Edito:

Ya creo entender lo que quieres hacer. Solo tienes que enviar los datos y una vez haya terminado con header('Location: ....') lo rediriges.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 14/07/2013, 09:42
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: ¿Es posible redireccionar con curl?

Cita:
Iniciado por abimaelrc Ver Mensaje
Trata esta lectura a ver si te ayuda http://www.forosdelweb.com/f18/aport...equest-724214/

Edito:

Ya creo entender lo que quieres hacer. Solo tienes que enviar los datos y una vez haya terminado con header('Location: ....') lo rediriges.
He tenido el mismo problema con una web donde publicaban unos datos que necesitaba cojer y la misma tiene login asi que luego de acceder uno es redirigido a un controller/action determinado ... por ejemplo a la home ... asi que uno debe poder "navegar" hasta la parte (pagina o controller/action) donde esta lo que uno desea parsear.

Quedo suscripto a ver si el compañero resuelve pues sabre resuelve tambien mi problema
__________________
Salu2!
  #4 (permalink)  
Antiguo 14/07/2013, 09:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: ¿Es posible redireccionar con curl?

Para lo que pides, debes hacer varias peticiones de curl y enviar en cada una lo que obtuviste del login a excepción de la primera que es la que debes loguearte y almacenar los valores. Lo demas es enviar los valores del logueo y hacer las peticiones hasta llegar a donde deseas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 14/07/2013, 09:58
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 19 años, 5 meses
Puntos: 36
Respuesta: ¿Es posible redireccionar con curl?

Cita:
Iniciado por abimaelrc Ver Mensaje
Trata esta lectura a ver si te ayuda http://www.forosdelweb.com/f18/aport...equest-724214/

Edito:

Ya creo entender lo que quieres hacer. Solo tienes que enviar los datos y una vez haya terminado con header('Location: ....') lo rediriges.
No puedo hacer eso porque sino pierdo las variables post... Utilizaré un formulario porque creo que curl no está para resolver mi problema que quizás este complicando de manera innecesaria.

Saludos!
  #6 (permalink)  
Antiguo 14/07/2013, 10:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: ¿Es posible redireccionar con curl?

Con curl lo que haces es la peticion a través de post y luego lo envias con header a la página de resultado con el mensaje.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 14/07/2013, 11:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: ¿Es posible redireccionar con curl?

Hola, justo tengo ese mismo problema! Yo estoy usando el framework Silex, y la clase Guzzle para hacer las peticiones REST. La verdad es que lo que intento hacer es bien sencillo, tan solo mandar un formulario a una url y que se dirija a esa url. Ahora mismo lo que consigo es que me muestre el html de la url de destino en la de inicio, es decir, en la que está el formulario, pero no es la intención. Podría hacerlo con javascript, con un evento al cargarse el html, pero creo que es mucho más seguro y profesional hacerlo con CURL. Alguien sabe como direccionar? Un saludo
  #8 (permalink)  
Antiguo 14/07/2013, 16:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: ¿Es posible redireccionar con curl?

Ya lo he indicado, con header('Location:....') puedes enviar al usuario a esa pagina.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 15/07/2013, 02:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: ¿Es posible redireccionar con curl?

Cita:
Iniciado por abimaelrc Ver Mensaje
Ya lo he indicado, con header('Location:....') puedes enviar al usuario a esa pagina.
Muchas gracias por tu ayuda, pero esa solución no es la correcta. O pierdes los datos, o se duplican las cabeceras.
  #10 (permalink)  
Antiguo 15/07/2013, 06:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: ¿Es posible redireccionar con curl?

No es que sea la correcta. Es que con cURL no vas a redireccionar. En ese caso estás perdiendo de vista cual es el propósito de cURL. Si lo que quieres es llenar datos de un servidor a otro sin que la persona se vaya del primer servidor, entonces cURL te es util. Pero si quieres llenar datos y luego redirigirlo, entonces con header es que lo logras. Solo tienes que usar la creatividad, como por ejemplo lo envias a la pagina de resultado con el mensaje que devolvió cURL usando alguna variable por el método de GET y muestras el mensaje. Solo es cuestión de pensar como mostrar el mensaje de lo que el formulario llenó.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 15/07/2013, 07:25
 
Fecha de Ingreso: febrero-2010
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: ¿Es posible redireccionar con curl?

Cita:
Iniciado por abimaelrc Ver Mensaje
No es que sea la correcta. Es que con cURL no vas a redireccionar. En ese caso estás perdiendo de vista cual es el propósito de cURL. Si lo que quieres es llenar datos de un servidor a otro sin que la persona se vaya del primer servidor, entonces cURL te es util. Pero si quieres llenar datos y luego redirigirlo, entonces con header es que lo logras. Solo tienes que usar la creatividad, como por ejemplo lo envias a la pagina de resultado con el mensaje que devolvió cURL usando alguna variable por el método de GET y muestras el mensaje. Solo es cuestión de pensar como mostrar el mensaje de lo que el formulario llenó.

Te entiendo, y tienes toda la razón. El caso es que mi aplicación necesita que se envíe una información por post pero A LA VEZ al usuario, ya que la url de destino es otro formulario donde se le piden los datos de una tarjeta de crédito. No me permite lo que tú me sugieres, que si es realmente lo más acertado en otros casos. No me permite acceder por Get, por lo tanto me temo que mi única alternativa es la que venía utilizando hasta ahora, javascript, no me gusta, pero es lo único que me queda. Gracias por todo!
  #12 (permalink)  
Antiguo 27/07/2013, 16:16
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 14 años, 3 meses
Puntos: 56
Respuesta: ¿Es posible redireccionar con curl?

CURL permite muchas cosas entre las cuales esta obtener la cookie y el retorno del código por ejemplo.

Para obtener la cookie y guardarla en un archivo temporal hasta que se destruya CURL
seria :

Código PHP:
    $cookiefile tempnam ("temp""CURLCOOKIE");
    
    
$chcurl_init("http://pagina a visitar.com");
    
curl_setopt($chCURLOPT_COOKIEJAR$cookiefile);
    
curl_setopt ($chCURLOPT_RETURNTRANSFERtrue);
    
$resultado curl_exec ($ch); 
Esto crearía un archivo .tmp con los valores de la cookie y cargaría el código de la pagina en la variable $resultado, puedes obtener todos los datos que posee la pagina o hacer lo que quieras con el código y luego puedes hacer lo siguiente para enviar los datos por post:
Código PHP:
    $chcurl_init("http://pagina a visitar.com");//pagina a visitar
    
curl_setopt ($chCURLOPT_COOKIEFILE$cookiefile);//utilizamos la cookie que conseguimos anteriormente
    
curl_setopt ($chCURLOPT_RETURNTRANSFERtrue);//para que nos devuelva el resultado
    
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);//esto es para seguir las redirecciónes
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT0);//tiempo máximo de conexión. 0 para ilimitado
    
curl_setopt ($chCURLOPT_POST1);//utilización de método post
    
curl_setopt ($chCURLOPT_POSTFIELDS"variable1=valor1&variable2=valor2");//variables que se desean enviar
    
$res curl_exec ($ch);//ejecuta CURL
    
unlink($ckfile);//borra el archivo de la cookie
    
curl_close($ch);//cierra CURL 
Una vez tengas esto y si no has enviado nada al navegador puedes utilizar header de php para redireccionár a la pagina que desees.
Ten en cuenta que si no borras la cookie podrás tener los datos de la misma para redireccionár a alguna pagina del servidor del que la obtuviste

Si tienes alguna duda sobre como utilizar CURL me lo haces saber.
Espero que te sirva esto.

Etiquetas: formulario, posible, redireccionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:13.