Comment implémenter la connexion automatique inter-domaines en php

PHPz
Libérer: 2023-04-04 14:48:02
original
888 Les gens l'ont consulté

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(&#39;Access-Control-Allow-Origin: *&#39;);
if ($_SERVER[&#39;REQUEST_METHOD&#39;] == &#39;POST&#39;) {
  if (isset($_COOKIE[&#39;user&#39;])) {
    echo $_COOKIE[&#39;user&#39;];
  } else {
    echo &#39;Cookie not found.&#39;;
  }
}
?>
Copier après la connexion

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[&#39;user&#39;];
if (!empty($user)) {
  $user = base64_decode($user);
  $user_arr = explode(&#39;,&#39;, $user);
  if (count($user_arr) == 2) {
    $username = $user_arr[0];
    $password = $user_arr[1];
    //check user credentials and login
    //...
    echo &#39;success&#39;;
  } else {
    echo &#39;Invalid cookie data.&#39;;
  }
} else {
  echo &#39;Cookie not found.&#39;;
}
?>
Copier après la connexion

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="&#39; + data + &#39;"></form>');
        iframe.contents().find('form').submit();
      });
    },
    error: function() {
      alert('Failed to get cookie.');
    }
  });
});
</script>
</head>
<body>
<p>Loading...</p>
</body>
</html>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!