Page 1 sur 2

Cookies impossible

Posté : 14 mars 2009, 18:46
par Yes
Bonjour,
Je commence le PHP depuis 2 jours, et j'essaye les exercices de base.
Voici ce que j'ai écrit pour les cookies :
<?php
  $pseudo = "Helios" ;
  setcookie( "pseudo" , $pseudo , time( )+ 60*60*24 ) ;
  echo 'Cookie pseudo --' . $_COOKIE[ 'pseudo' ] . '--' ;
?> 
Le résultat affiché est :
  • Cookie pseudo ----
En parcourant le forum, j'ai pu essayer et vérifier :
  • avec le test isset(...)
  • j'ai bien mis ce fichier cookiz.php dans le repertoire racine (celui où je mets le index.html)
  • fifox ne trouve aucun cookies pour cette page
  • l'addon webdevelopper ne trouve rien non plus
  • fifox accepte tous les cookies jusqu'a leurs expirations
  • Je n'ai pas accès au serveur, mais j'ai trouvé que j'avais le php 4.3.11.
  • j'ai essayé avec session_id( ) et $_SESSION, et ca fonctionne bien
mais toujours aucun cookie à l'horizon :?
Merci pour votre aide.

Posté : 14 mars 2009, 19:29
par Ryle
Erreurs communes :

Les cookies ne seront accessibles qu'au chargement de la prochaine page, ou au rechargement de la page courante. Pour tester si un cookie a été défini avec succès, vérifiez la présence du cookie au prochain chargement de la page avant que le cookie n'expire. Le délai d'expiration est défini en utilisant le paramètre expire . Une façon simple de vérifier le positionnement du cookie est d'utiliser print_r($_COOKIE);.
Tu ne peux donc pas placer le cookie et l'afficher immédiatement après :)

Posté : 14 mars 2009, 22:09
par Yes
Merci pour la précision. J'ai modifié le source pour afficher une seconde page.
cookiz1.php :
<?php
start_session( );
$pseudo = "Helios" ;
setcookie( "pseudo" , $pseudo , time( )+ 60*60*24 ) ;
echo '<br /><a href="cookiz2.php">Rafraichir pour accéder aux coookies</a>';
?> 
cookiz2.php :
<?php
echo 'Test cookiz<p>' ;
echo 'Cookiz pseudo --' . $_COOKIE[ 'pseudo' ] . '--<p><p>' ;
echo 'print_r( $_COOKIE ) ;<p>' ;
echo print_r( $_COOKIE ) ;
?> 
Toujours pas de cookies à l'horizon.
Pourtant, en demandant à l'utilisateur de cliquer pour afficher une nouvelle page, il me semble que ca répond à ta remarque.
Que faire ? :(

Posté : 14 mars 2009, 23:16
par Aureusms
start_session( ); ou session_start() ? enfin c'est pas ton sujet mais tu as une faute...
les cookies sont activé sur ton navigateur ?

Posté : 14 mars 2009, 23:32
par Yes
Les cookies sont acceptés, et ne sont plus supprimés avant leur expiration.
et le script est bien dans le répertoire racine ( / ).

Merci d'avoir noté l'erreur sur session_start( ). C'est corrigé.

Toujours pas de cookies :(

Posté : 15 mars 2009, 01:03
par Yes
Je viens de rajouter une page intermédiaire (dans l'espoir que Soeur Anne voit venir ce foutu cookie).
page0.php
<?php
$pseudo = "Helios";
setcookie( "pseudo" , $pseudo , time( )+ 60*60*24 ) ;
echo "<meta http-equiv='Refresh' content='1;URL=page1.php' />";
echo 'Vous devriez être redirigé sur une autre page dans 1 seconde.' ;
?>
page1.php
<form name="form1" method="post" action="page2.php" >
<input type="text" name="pseudo" id="pseudo">
<input type="password" name="pass" id="pass">
<input type="submit" name="button" id="button" value="Valider">
</form>
page2.php
<?php
$idpseudo = $_POST[ "pseudo" ] ;
$idpass = $_POST[ "pass" ] ;

if($idpseudo == "test" && $idpass == "12345") {
  echo 'Vous êtes bien identifié<p>' ;
  echo 'Le Cookiz a pris ? --' . $_COOKIE[ 'pseudo' ] . '--<p><p>' ;
  echo "<meta http-equiv='Refresh' content='5;URL=page3.php' />";
  echo 'Vous devriez être redirigé sur une autre page dans 5 secondes.' ;
} else { echo "<meta http-equiv='Refresh' content='0;URL=page1.php' />"; }
?>
page3.php
<?php
echo "Bienvenue sur votre page d'accueil<br>" ;
echo 'Le Cookiz a pris ? --' . $_COOKIE[ 'pseudo' ] . '--<p><p>' ; // :) ou :( ?
echo 'Lien pour se deconnecter<br>' ;
?>
Soeur Anne, ma soeur Anne, ne vois-tu point venir de cookie ? :?
Je ne vois que ton clavier qui rougeoit et ton site qui pleuroit :wink:
Bref, toujours pas de cookies...

Posté : 15 mars 2009, 01:22
par Aureusms
Vois tu le cookies du session_start(); ? Ene ffet l'id de session est transmis via cookies. Si tu ne le vois pas cela vient de ton navigateur.

Posté : 15 mars 2009, 01:29
par Yes
oui, avec
  • $sessid = session_id( ) ;
    echo 'session id = ' . $sessid ;
j'affiche l'id de la session
  • session id = 96eee9e77e662c5a48d3ea43a837e10f
J'avoue, pour moi, le mystère s'épaissit...

Posté : 15 mars 2009, 02:36
par Aureusms
Hmm :-k effectivement mais normallement l'ID de session est dans un cookies donc si tu fais print_r ($_COOKIES) tu dois le voir sinon ils sont désactivés dans ton navigateur.

Pour pseudo essaye sans le time() : Il sera valable jusqu'à fermeture du navigateur
setcookie( "pseudo" , $pseudo) ; 

Posté : 15 mars 2009, 14:16
par Yes
Bonjour,
Merci Aureusms de tes réponses. Une précision :
...si tu fais print_r ($_COOKIES) tu dois le voir...
le nom $_cookie est au singulier ou au pluriel ? :-k
Hier après-midi, le cookie phpsessid existait. et puis plus rien. D'autant qu'un ami me montre un exemple sur son site, et me pose bien le cookie ici. |*()
La nuit de sommeil n'a rien apporté :(
Et en reprenant un exemple d'hier, le cookie phpsessid est revenu !
  • :agenouille: Array ( [PHPSESSID] => 1fabb8b2d0168a203725630562a4be4c ) 1
Quant à ce cookie recalcitrant, il est toujours aux abonnés absents.
Je suis :fete: completement largué... ya forcément une explication ! (sous-entendu logique et rationnelle) :priere:

Posté : 15 mars 2009, 19:23
par Ryle
C'est bien $_COOKIE (sans le s :))

Essaye en ajoutant également le path dans ton setCookie, et en spécifiant la racine "/" :
setcookie( "pseudo" , $pseudo , time( )+ 60*60*24, '/' ) ; 

Posté : 16 mars 2009, 01:05
par Yes
Le setcookie( ) avec et sans timer, avec et sans chemin (merci Ryle, j'y aurais pas pensé :) ) ne donne rien de plus.
Après reboot, je n'arrive plus à obtenir le cookie du session_start( )... alors qu'un site ami me pose le cookie en question |*()

Qu'est-ce qu'il y a que je fais et qu'il faudrait pas ? ou que je ne fais pas et qu'il faudrait ?
Est-ce que qq'un aurait un code qui fonctionne pour que je l'essaye ?
Est-ce que qq'un aurait essayé les codes que j'ai posté pour me dire si ca fonctionne ou pas ?

Quand je pense que je n'en suis qu'au début du php... :sick:

Posté : 16 mars 2009, 10:45
par Yes
Bonjour,
Un peu par curiosité, j'ai repris mon exercice avec les cookies.
  • Array ( [PHPSESSID] => dd4bdec10989cb163903a97c775311e1 [phpmvCookiesAllowed] => 1 ) 1
Le cookie de session est enregistré du premier coup !!! #-o
Et d'où sort ce phpmvCookiesAllowed ? Une recherche sur PHPfrance.net me répond No pages matched your query...
La, si vous n'avez pas d'explication, cela releve de la magie pure. :wink:

Posté : 16 mars 2009, 16:17
par Yes
heuuuuuuuuuuu finalement, c'est de la magie ou de la sorcellerie ?
je viens de recommencer le meme exercice sur le meme serveur, sans aucune modification.
ya juste que j'ai mangé entre les deux, rebooté le pc et relancé le navigator.
Résultat ?
  • print_r( $_COOKIE ) ;
    Array ( ) 1
Bon j'hesite... je pleure à gros sanglots ? ou je fais une syncope ? :wink:
Parce que sur l'autre serveur
  • Array ( [PHPSESSID] => 79da30bd73c54d669f5d6c3cd33a9e86 )
Alors ?

Posté : 17 mars 2009, 11:09
par Aureusms
heuuuuuuuuuuu finalement, c'est de la magie ou de la sorcellerie ?
je viens de recommencer le meme exercice sur le meme serveur, sans aucune modification.
ya juste que j'ai mangé entre les deux, rebooté le pc et relancé le navigator.
Résultat ?
  • print_r( $_COOKIE ) ;
    Array ( ) 1
Bon j'hesite... je pleure à gros sanglots ? ou je fais une syncope ? :wink:
Parce que sur l'autre serveur
  • Array ( [PHPSESSID] => 79da30bd73c54d669f5d6c3cd33a9e86 )
Alors ?
Sur l'autre serveur ?
Ton site est présents sur deux serveurs ? ou veut tu dire que tu as testé ton site sur 2 PC différents ?