Comment puis-je me connecter à un site distant avec PHP cURL, puis rediriger vers ce site

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

  •  01-10-2019
  •  | 
  •  

Question

J'ai vu cette demande de plusieurs façons, mais ne peut pas trouver une réponse qui fonctionne.

J'ai créé une page qui ouvre une session sur un site basé .NET à distance en utilisant PHP / cURL. Fonctionne très bien dans la mesure où il va - je peux obtenir les données de retour de l'utilisateur connecté en page via curl_exec et faire tout avec elle, mais ce que je vraiment besoin de faire est de rediriger l'utilisateur vers cette page . redirigeant simplement me donne une page Identifié sur le site distant. Je sais que la réponse est à obtenir le cookie de retour lorsque les journaux de plissement, en passant ensuite dans un second appel. . . en quelque sorte. I; m certain que quelqu'un doit faire cela et peut fournir un exemple de travail. S'il vous plaît aider - cela me rend dingue!

Merci,

Mark

Était-ce utile?

La solution

Pas étonnant que vous ne pouvez pas trouver une réponse qui fonctionne.
C'est impossible.

Autres conseils

Le problème est que la connexion viendra de votre serveur PHP, pas de l'adresse IP de l'utilisateur final, de sorte que lorsque vous redirigez l'utilisateur, le site ne sera probablement pas les voir comme connecté.

Vous pouvez régler faire des choses comme passer le cookie fourni au dos de connexion du serveur PHP à l'utilisateur final, mais si le site redirigée est même légèrement bien écrit, il ne tombera pas pour cela.

Si vous avez le plein contrôle des deux sites et ils peuvent accéder à chaque-autres bases de données, vous pouvez écrire un code de fin de retour de sorte que le serveur PHP indique le site .net pour attendre l'utilisateur entrant; que le travail de puissance. Mais vous auriez besoin de faire un travail de back-end dans les deux systèmes.

Si vous ne disposez pas d'un accès back-end sur le site .Net, la seule façon que je peux voir de le faire serait d'utiliser le site de PHP en tant que proxy complet pour le site .Net - à savoir plutôt que faire une redirection, afficher uniquement la sortie du site .net directement via votre PHP. Cela aura toutes sortes d'autres problèmes qui y sont associés bien.

Si l'utilisation du site cookies, vous pouvez utiliser 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");
}

cela devrait fonctionner mais je ne testons pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top