¿Cómo puedo ingresar a un sitio remoto con PHP cURL, a continuación, redirigir a ese sitio

StackOverflow https://stackoverflow.com/questions/3676098

  •  01-10-2019
  •  | 
  •  

Pregunta

He visto esto pidió en varias formas, pero no puede encontrar una respuesta que funciona.

He creado una página en la que se registra en un sitio basado en .NET remoto usando PHP / CURL. Funciona muy bien en lo que va - puedo conseguir la parte posterior de los datos que ha iniciado sesión en la página a través de curl_exec y hacer todo con él, pero lo que realmente que necesita hacer es redirigir al usuario a esa página . Simplemente redirigir me da una sesión cerrada página en el sitio remoto. Sé que la respuesta está en conseguir la cookie que se devuelve cuando los registros rizar, pasando luego en una segunda llamada. . . de alguna manera. I; m seguro de que alguien debe estar haciendo esto y puede proporcionar un ejemplo de trabajo. Por favor, ayuda - esto me está volviendo loco!

Gracias,

Marcar

¿Fue útil?

Solución

No es de extrañar que no puede encontrar una respuesta que funciona.
Eso es imposible.

Otros consejos

El problema es que el inicio de sesión vendrá de su servidor PHP, no desde la dirección IP del usuario final, por lo que cuando se redirige al usuario, el sitio probablemente no los ven como conectado.

Se puede configurar hacer cosas como pasar la cookie proporcionada a volver inicio de sesión del servidor de PHP para el usuario final, pero si el sitio redirigida es incluso un poco bien escrito, no va a caer en eso.

Si usted tiene el control total de los dos sitios y se puede acceder a las bases de datos de cada-otros, se podría escribir algo de código parte de atrás para que el servidor PHP dice el sitio .net esperar que el usuario entrante; aquello podría funcionar. Pero lo que se necesita para hacer un trabajo de fondo en ambos sistemas.

Si no tiene acceso a servicios de fondo para el sitio .Net, entonces la única forma que veo de hacerlo sería utilizar el sitio PHP como un proxy completo para el sitio .Net - es decir, en lugar de hacer una redirección, simplemente mostrar la salida del sitio de .NET directamente a través de su PHP. Esto tendrá todo tipo de otros problemas asociados con él sin embargo.

Si los Cookies El sitio podría utilizar cURL.

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$passwd");
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);

$header = curl_exec($ch);

if (preg_match("/set-cookie:(.*)\n", $header, $m)) {
  $cookies = preg_replace('/(expires|path|domain)=[^;]*;?/i', '', $m[1]);
  header("Cookies: " . $cookies);
  header("Location: $url");
}

esto debería funcionar, pero no probarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top