Maison > Article > développement back-end > Comment implémenter la connexion automatique inter-domaines en php
Avec la popularité croissante des applications Web, les problèmes inter-domaines sont devenus de plus en plus difficiles à éviter. Lorsque les utilisateurs accèdent à un nom de domaine à partir d'un autre nom de domaine, ils devront peut-être se connecter automatiquement entre différents noms de domaine pour améliorer l'expérience utilisateur. Dans ce cas, PHP est un choix efficace pour la connexion automatique entre domaines. Dans cet article, nous présenterons comment utiliser PHP pour implémenter la connexion automatique entre domaines.
1. Obtenir des cookies inter-domaines
Pour obtenir une connexion automatique entre domaines, vous devez d'abord obtenir le cookie de l'utilisateur sous le nom de domaine source. Étant donné que les cookies ne sont pas accessibles entre les domaines, nous devons utiliser ajax pour soumettre une demande au serveur afin d'obtenir des cookies sous le nom de domaine source.
Sur le serveur de nom de domaine source, nous devons créer un fichier PHP nommé "get_cookie.php" pour obtenir les cookies. Le code est le suivant :
<?php header('Access-Control-Allow-Origin: *'); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_COOKIE['user'])) { echo $_COOKIE['user']; } else { echo 'Cookie not found.'; } } ?>
Dans le code, nous utilisons la fonction d'en-tête pour définir le fichier d'en-tête "Access-Control-Allow-Origin" pour autoriser l'accès entre domaines. Si le cookie utilisateur existe, le cookie est renvoyé à l'appelant, sinon "Cookie introuvable" est renvoyé.
2. Envoyer des cookies entre domaines
Après avoir obtenu le cookie du domaine source, nous devons l'envoyer au domaine cible. Pour garantir la sécurité, nous ne pouvons pas envoyer les valeurs des cookies directement au domaine cible. Nous devons plutôt utiliser une technologie de cryptage pour traiter les cookies. Dans cet exemple, nous choisissons d'utiliser la technologie d'encodage Base64.
Sur le serveur de noms de domaine cible, nous devons créer un fichier PHP nommé "login.php" pour traiter les cookies envoyés depuis le domaine source. Le code est le suivant :
<?php $user = $_POST['user']; if (!empty($user)) { $user = base64_decode($user); $user_arr = explode(',', $user); if (count($user_arr) == 2) { $username = $user_arr[0]; $password = $user_arr[1]; //check user credentials and login //... echo 'success'; } else { echo 'Invalid cookie data.'; } } else { echo 'Cookie not found.'; } ?>
Dans le code, nous utilisons d'abord la variable $_POST pour obtenir le cookie envoyé depuis le domaine source. Nous décodons ensuite le cookie en Base64 et le divisons en nom d'utilisateur et mot de passe. Ensuite, nous pouvons nous connecter en utilisant notre nom d'utilisateur et notre mot de passe et renvoyer une chaîne de « réussite » à l'appelant en cas de connexion réussie. Si les données du cookie ne sont pas valides, le message « Données de cookie invalides » est renvoyé.
3. Utilisez iframe pour réaliser un saut automatique
Enfin, nous devons utiliser iframe pour passer automatiquement entre le domaine source et le domaine cible. Sur le domaine source, nous créons un fichier HTML nommé "login.html" avec le code suivant :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Cross-Domain Login</title> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script> $(function() { $.ajax({ url: 'https://example.com/get_cookie.php', method: 'POST', success: function(data) { var iframe = $('<iframe/>', { src: 'https://targetdomain.com/login.php', style: 'display:none;' }); $('body').append(iframe); iframe.load(function() { iframe.contents().find('body').append('<form method="post" action="https://targetdomain.com/login.php"><input type="hidden" name="user" value="' + data + '"></form>'); iframe.contents().find('form').submit(); }); }, error: function() { alert('Failed to get cookie.'); } }); }); </script> </head> <body> <p>Loading...</p> </body> </html>
Dans le code, nous utilisons la bibliothèque jQuery pour lancer une requête ajax afin d'obtenir le cookie du domaine source. Ensuite, nous avons créé une iframe cachée et l'avons ajoutée à l'élément body. Une fois le chargement de l'iframe terminé, nous ajoutons le cookie à un formulaire POST et utilisons le formulaire pour lancer une demande de connexion sur le domaine cible.
Lorsque l'utilisateur ouvre "https://sourcedomain.com/login.html", la page fera automatiquement une requête POST pour obtenir le cookie. Ensuite, la page ouvrira une page iframe masquée et remplira automatiquement les informations de connexion pour terminer la connexion automatique.
Résumé
Cet article explique comment utiliser PHP pour implémenter la connexion automatique entre domaines. Nous utilisons d'abord une requête ajax pour obtenir le cookie sur le domaine source, puis nous chiffrons le cookie en utilisant l'encodage Base64 et le déchiffrons à l'aide d'un formulaire POST sur le domaine cible. Enfin, nous utilisons des iframes pour passer automatiquement entre les domaines source et cible. L'utilisation de cette méthode peut offrir aux utilisateurs une meilleure expérience tout en maintenant une sécurité relativement élevée, et elle mérite d'être maîtrisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!