Pourquoi mon cookie « username2 » est-il vide malgré sa configuration à l'aide de setcookie() en PHP ?

Mary-Kate Olsen
Libérer: 2024-11-22 00:15:11
original
439 Les gens l'ont consulté

Why is my 'username2' cookie blank despite setting it using setcookie() in PHP?

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 :

  • Paramètre Expire : Spécifiez l'heure d'expiration dans un format valide. Le code fourni définit une expiration de 365 jours, mais le format suggéré est time() n, où n est le nombre de secondes.
  • Paramètre de chemin : Comme suggéré dans la solution, définissez path = / garantit que le cookie s'applique à l'ensemble du site, pas seulement au répertoire actuel.

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);
        }
    }
}
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal