cookieless authentification en php5
-
13-09-2020 - |
Question
Dans mon application PHP, j'ai utilisé le nom d'utilisateur & Pwd et consultez la table dans la base de données pour vérifier la validité des utilisateurs.Après la connexion est réussie, j'ai stocké les informations d'identification du Serveur de Session en tant que ci-dessous:
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
Et j'ai vérifié la session pour s'assurer que l'utilisateur est déjà connecté.Vous pouvez voir le code ci-dessous:
if (empty($_SESSION['userId']))
header("Location: login.php");
Le problème est que si j'ai désactivé les cookies dans le navigateur, je ne pouvais pas aller sur une autre page, même si la connexion réussit.Je trouve que, à la session PHP utilise les cookies pour stocker des valeurs dans le navigateur.Est-il de toute façon à utiliser cookieless session en PHP5?
La solution
Oui, mais vous devez ajouter le sessid
ou sid
pour chaque lien.
Il est décrit en détail ici:http://myles.eftos.id.au/blog/2005/11/26/cookie-less-sessions-in-php/
Vous avez également besoin de changement php.ini
comme suit: php_value session.use_trans_sid = 1
.
Autres conseils
Oui, mais vous ne voulez pas.En fait, vous devriez seulement utiliser des sessions à base de cookies.Ceci est la configuration par défaut à partir de PHP 5.3.Veuillez lire sur Fixation de session pour plus d'informations.
Quelles circonstances avez-vous cette force que vous souhaitez que les utilisateurs puissent utiliser votre site sans cookies?
Oui, vous pouvez, en permettant session.use_trans_sid
.Cependant, il y a les problèmes de sécurité à le faire.
Il est généralement admis que pour la connexion, on doit accepter un cookie.
L'autre alternative est d'utiliser http autorisation au lieu des séances, mais cela a aussi ses inconvénients.
Vous pouvez générer une carte d'identité de session et l'ajouter à vos liens comme celui-ci
<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>