Maison  >  Article  >  développement back-end  >  Pourquoi mon cookie « username2 » est-il vide malgré sa configuration à l'aide de setcookie() en PHP ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-22 00:15:11452parcourir

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);
        }
    }
}

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!

Déclaration:
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