Page 1 sur 2

Cookie, création & appel

Posté : 04 oct. 2005, 21:28
par PsykoCors
Bonjour,

J'ai en probleme pour faire un appel a mon cookie :

Dans une page, j'ai :
<? setCookie("forum",$pseudo) ;
echo "Cookie créé"."<br>"."Bienvenue $pseudo"; ?>
<!-- redirection -->
<meta http-equiv="refresh" content="3;URL=../index.php">
<? }
else {
echo "Erreur"; ?>
<!-- redirection -->
<meta http-equiv="refresh" content="3;URL=identification.php">
<? } ?>

Dans la page "index.php" j'ai a moment donné :
$forum=$_COOKIE["forum"]; 
echo "Vous êtes identifié sous --$pseudo--";


Seulement cela ne donne rien ... Alors que quand je met ce code par exemple dans la page ou je crée le cookie (pour tester), l'appel a ce cookie marche. Doit y avoir un truc que je n'ai pas compris :( Peut etre un probleme avec ma redirection. J'ai tester aussi avec "time()+nonbre" ca ne marche pas non plus

Merci de votre aide

Posté : 04 oct. 2005, 21:32
par Cyrano
Petite expérience instructive : essaye un truc:
<pre>
<?php
var_dump($_COOKIE);
?>
</pre>

Posté : 04 oct. 2005, 21:53
par DocType
ce qui me fait le plus peur, c'est qu'il s'agit d'une identification à un forum :roll:
et s on regarde le bout de code, ba on peut se logger en tant que n'importe qui :roll: vu que la connexion est assurée par...le pseudo :?

Posté : 04 oct. 2005, 21:59
par PsykoCors
Premierement il y a une authentification qui vérifie le mot de passe.
Desio, le code code n'est pas terminé
Tersio, je fais ca pour moi, pour m'entrainer :D

Je teste ce que tu m'as dit Cyrano

Posté : 04 oct. 2005, 22:03
par PsykoCors
Donc :
effectivement il n'y a aucunne donnée dans le tableau sur index.php, mais les donnée apparaisse bien sur la page ou je crée le cookie^^ Mais j'ai donc toujours le meme probleme :?

Posté : 04 oct. 2005, 22:34
par Cyrano
Mouais, j'ai jamais été un amateur de cookies, je leur préfère de très loin les sessions. Mais un petit test m'a montré que le var_dump() aurait du te montrer le contenu du cookie... S'il est vide, il y a un problème...:-k

Posté : 04 oct. 2005, 22:41
par PsykoCors
Oui, il est vide lors du changement de page donc je comprend pas trop ... Sinon juste pour info, ca consiste en quoi les sessions ?

Posté : 04 oct. 2005, 22:45
par Truc
juste une idée en passant (je pense pas que ce soit le problème puisque tu ne peut pas afficher le cookie avec var_dump) , mais tu fait:
$forum=$_COOKIE["forum"];
echo "Vous êtes identifié sous --$pseudo--";
ça ne serai pas plustot:
$forum=$_COOKIE["forum"];
echo "Vous êtes identifié sous --$forum--";
avec " $forum " a la place de " $pseudo "

Sinon tu peut verifier s'il est crée sur ta machine ce fameux cookie

Posté : 04 oct. 2005, 22:48
par DocType
Je me trompe où rien en doit se situer avant un cookie (affichage)? Dans son cas, si y'a du code qui affiche avant la gestion de ce cookie, ca expliquerait le problème ? Pourrais tu poster le code entier stp ?

Le sessions c'est la même chose que les cookies...mais ca se passe sur le serveur (resumé rapide). De plus, une variable session definie est dès lors disponible. Il n'y a donc pas besoin de recharger la page !

Pour ton script:
Premièrement vérifies que tu acceptes les cookies venant de ton site...
Desio, je ne vois pas l'utilité du rechargement de la page (tu peux stocker dans une autre variable car c'est assez chiant quand à la navigation)
Tersio, postes ton code pour qu'on l'examine

Posté : 04 oct. 2005, 22:50
par DocType
juste une idée en passant (je pense pas que ce soit le problème puisque tu ne peut pas afficher le cookie avec var_dump) , mais tu fait:
$forum=$_COOKIE["forum"];
echo "Vous êtes identifié sous --$pseudo--";
ça ne serai pas plustot:
$forum=$_COOKIE["forum"];
echo "Vous êtes identifié sous --$forum--";
avec " $forum " a la place de " $pseudo "

Sinon tu peut verifier s'il est crée sur ta machine ce fameux cookie
+1 :lol:
tellement dans le code et les problèmes de config de son système que j'avais pas capté.
Je te vénère Truc :lol: :P

Posté : 04 oct. 2005, 22:57
par PsykoCors
Effectivement c'est bien vu 8)

Mais le soucis c'est que ce n'est pas réellement une erreur, c'est a force, de tester, retester, et reretester, donc je me suis au final gourer dans mes variable, mais ca ne marche pas qd meme :cry:


PS : j'ai configuré Fireofx pour accepter les cookies

Posté : 04 oct. 2005, 22:59
par DocType
Effectivement c'est bien vu 8)

Mais le soucis c'est que ce n'est pas réellement une erreur, c'est a force, de tester, retester, et reretester, donc je me suis au final gourer dans mes variable, mais ca ne marche pas qd meme :cry:


PS : j'ai configuré Fireofx pour accepter les cookies
Je me trompe où rien en doit se situer avant un cookie (affichage)? Dans son cas, si y'a du code qui affiche avant la gestion de ce cookie, ca expliquerait le problème ? Pourrais tu poster le code entier stp ?

Le sessions c'est la même chose que les cookies...mais ca se passe sur le serveur (resumé rapide). De plus, une variable session definie est dès lors disponible. Il n'y a donc pas besoin de recharger la page !


Pour ton script:
Premièrement vérifies que tu acceptes les cookies venant de ton site...
Desio, je ne vois pas l'utilité du rechargement de la page (tu peux stocker dans une autre variable car c'est assez chiant quand à la navigation)
Tersio, postes ton code pour qu'on l'examine

Posté : 04 oct. 2005, 23:06
par PsykoCors
Oki je poste. je previens le code doit être barbare, ca doit faire une semaine que je me suis réelement mis au php (qd j'ai un peu de temps, j'ai cour sinon ...) :lol:

indentification.php :

Code : Tout sélectionner

IDENTIFICATION <table border=0> <form method="post" action="valid_identification.php"> <tr><td>Pseudo :</td> <td><input type="text" name="pseudo"></td></tr> <tr><td>Mot de passe :</td> <td><input type="text" name="mdp"></td></tr> <tr><td colspan=2 align=center><input type="submit" name="submit" value="Envoyer"></td> </form> </table>

valid_identification.php :
<?
$nb = 3;               // Nombre d'affichages souhaités sur une ligne
$host = "localhost";         // Serveur SQL
$login = "root";        // Login d'accés SQL
$pass = "";         // Password d'accés SQL
$hostname = "forum";     // Nom de la base de données

// connexion à la bdd
$bdd = mysql_connect($host, $login, $pass);  
// selection de la table 
mysql_select_db($hostname,$bdd);

//recupération des variables
$pseudo= $_POST["pseudo"]; 
$mdp = $_POST["mdp"];

//Enregistrement du mdp du pseudo donné
$sql = "SELECT * FROM membres WHERE pseudo='$pseudo'"; 
$req = mysql_query($sql);
$valid = mysql_fetch_array($req);
 

//Verification du mot de passe avec l'enregistrement précedant
$test_mdp=$valid['mdp']; 
if ($test_mdp==$mdp)
{
//création du cookie
setCookie("forum",$pseudo,time()+5*60) ;
echo "Cookie créé"."<br>"."Bienvenue $pseudo"; ?>
<!-- redirection -->
<meta http-equiv="refresh" content="3;URL=../index.php"> 
<? }
else {
echo "Erreur"; ?>
<!-- redirection -->
<meta http-equiv="refresh" content="3;URL=identification.php">
<? }
//Pour recupérer la varuable du cookie :
$forum=$_COOKIE["forum"];
echo $forum

?>

index.php :
<?
$nb = 3;               // Nombre d'affichages souhaités sur une ligne
$host = "localhost";         // Serveur SQL
$login = "root";        // Login d'accés SQL
$pass = "";         // Password d'accés SQL
$hostname = "forum";     // Nom de la base de données

// connexion à la bdd
$bdd = mysql_connect($host, $login, $pass);  
// selection de la table 
mysql_select_db($hostname,$bdd);
//recupération des données du cookie
$forum=$_COOKIE["forum"]; 
?>
<a href="newsujet.php">Créer un nouveau sujet</a>
<a href="membres/identification.php">S'identifier</a>
<? echo "Vous êtes identifié sous --$forum--"; ?>
<br>
<br>
<br>
<?
$sql = "SELECT * FROM `sujet`";
$req = mysql_query($sql);

while($sujet = mysql_fetch_array($req)){ ?>
<A HREF="message.php?id=<?=$sujet['id'];?>"><? echo $sujet['sujet']."<br>"; ?>
<? } 
mysql_close();
?>

PS : je viens de regarder mon cookie avec firefox et il est bien créer avec les 5 minutes que j'ai défini avec time()

Posté : 04 oct. 2005, 23:15
par DocType
$pseudo= $_POST["pseudo"]; 
$mdp = $_POST["mdp"]; 
$sql = "SELECT * FROM membres WHERE pseudo='$pseudo'";
Attention, risque d'injection SQL... :roll:
<? echo "Vous êtes identifié sous --".$forum."--"; ?> 
Esaies ça, je sais que des fois en local ca règle le problème :wink:
Après, je ne vois pas de soucis quand à l'envoi du setcookie :?

Posté : 04 oct. 2005, 23:21
par PsykoCors
Les problemes de sécurité, je m'en soucis pas pour l'instant, je preéfère me concentrer sur la codage (sa propreté mais surtout su le fait qu'il marche lol). mais je te remerci de me les souligner, ca serra bon pour la suite :)

Sinon ben ... ca me fais toujours la même chose ... Faudra que j'essaye sur une autre machine pour voir, on sur un serveur directement ... Mais j'aimerai bien qu'il marche sur le poste sur lequel je suis. j'avoue que je vois pas du tout d'ou vient le probleme ... :cry: