2012-08-27 21 views
-1

Je suis en train à la fois une COOKIE et session pour les utilisateurs lors de leur connexion/inscription. Une SESSION pour plus de convivialité et un COOKIE pour la persistance. Lorsqu'un nouvel utilisateur s'inscrit sur mon site Web, je souhaite le rediriger vers son profil. J'ai besoin de créer une variable SESSION et COOKIE dès qu'ils s'inscrivent pour le faire. Voici ma solution:COOKIE PHP

$query2= "INSERT INTO users (fname, lname, email, password) VALUES 
('$fname', '$lname', '$email', '$password1')"; 
    mysqli_query($connect, $query2) 
     or die('error with query'); 
    session_start(); 
    $query3= "SELECT * FROM users where email= '".$email."' AND password= 
'".$password1."'"; 
    $result2= mysqli_query($connect, $query3); 
    $row= mysqli_fetch_array($result2); 
    $_SESSION['id'] = $row['user_id']; 
    setcookie('id', $row['user_id']); 
      echo $_SESSION['id']; 
      echo $_COOKIE['id']; 
    echo "You are now logged in."; 

I d'abord Insérez la nouvelle ligne de données. Puis je le rappelle pour créer la variable SESSION et COOKIE. Mais, voici mon problème, chaque fois que je fais écho à la variable COOKIE, sa valeur est toujours inférieure à ce que la valeur réelle devrait être. La SESSION est correcte cependant. Qu'est-ce que je fais mal? Quel pourrait être le problème. J'ai créé un autre page.php pour juste renvoyer les variables SESSION et COOKIE et elles sont correctes ici. Merci.

+2

En note, vous vous rendez compte qu'il existe des éditeurs de cookies pour que l'utilisateur dans ce cas peut changer le cookie à n'importe quel ID utilisateur et être connecté comme eux? –

+0

comment puis-je empêcher cela? – user1592953

+0

N'enregistrer cette choses en biscuit –

Répondre

1

$_COOKIE contient les cookies envoyés dans la demande. L'appel setcookie() ne changera pas $_COOKIE - jusqu'à ce qu'ils envoient la demande suivante. Vous voyez le cookie de la dernière requête. ;)

+0

Alors, je vais bien pour le mettre sur set-up comme je suis déjà en train de faire? Ensuite, il suffit de l'appeler sur le script de profil? – user1592953

+0

'$ _SESSION' dure aussi longtemps que le navigateur est ouvert. Cela fonctionnera très bien pour la redirection de profil. Vous n'avez besoin que de '$ _COOKIE' pour l'identification à long terme de l'utilisateur (mais ne stockez pas d'informations confidentielles dans les cookies). – EthanB

5

La valeur du cookie que vous définissez à l'aide de setcookie n'est pas affichée sur la même page. Le fonctionnement du cookie est que les données que vous définissez dans le cookie sont envoyées au navigateur pour les enregistrer sur votre ordinateur local. Le navigateur le rend disponible à votre page dans le tableau $ _COOKIE la prochaine fois que votre navigateur se connecte au serveur.

L'utilisation de $ _COOKIE immédiatement après le réglage ne fonctionnera donc pas. D'autre part, la session peut être utilisée immédiatement après l'avoir définie avec $ _SESSION.

+0

Merci, ça le rend beaucoup plus clair maintenant. :) Je vous en suis reconnaissant. – user1592953