Dépannage des cookies vides avec la gestion de session
Dans la fonction PHP présentée, le processus de validation de l'utilisateur comprend la définition de cookies pour « nom d'utilisateur » et « username2' en utilisant setcookie(). Cependant, lors de la récupération du cookie « username2 », il reste vide. Ce problème peut survenir pour diverses raisons.
Configuration incomplète des cookies
Assurez-vous que l'ensemble de la configuration setcookie() inclut les paramètres nécessaires :
Sortie Modification
Faites attention à l'avertissement du manuel PHP : "les cookies doivent être envoyés avant toute sortie de votre script." Évitez de faire écho avant de définir des cookies pour empêcher les en-têtes déjà envoyés. Dans le code donné, echo $_COOKIE['username2']; sortie(); doit être placé avant l'en-tête("Location: ../new.php"); line.
Valider l'optimisation de la fonction
La fonction validateUser() doit être utilisée pour définir la session et la redirection uniquement, sans aucune logique ni requête de base de données. Pensez à créer une fonction distincte pour la validation de l'utilisateur et une autre pour la configuration des cookies.
Exemple
Une version optimisée de la fonction validateUser() et du paramétrage des cookies :
// User validation function function validateUser($username) { session_regenerate_id (); $_SESSION['valid'] = 1; $_SESSION['username'] = $username; } // Cookie setting function function setCookies($username, $password) { setcookie('username', $username, time() + 60 * 60 * 24 * 365, '/'); setcookie('password', $password, time() + 60 * 60 * 24 * 365, '/'); } // Function call if(mysql_num_rows($queryreg) != 0){ $row = mysql_fetch_array($queryreg,MYSQL_ASSOC); $hash = hash('sha256', $row['salt'] . hash('sha256', $password)); if($hash == $row['password']) { if($row['confirm'] == 1){ setCookies($username, $password); validateUser($username); } } }
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!