Cookies impossible

Yes
Invité n'ayant pas de compte PHPfrance

14 mars 2009, 18:46

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 mars 2009, 19:29

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Yes
Invité n'ayant pas de compte PHPfrance

14 mars 2009, 22:09

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 ? :(

ViPHP
ViPHP | 1996 Messages

14 mars 2009, 23:16

start_session( ); ou session_start() ? enfin c'est pas ton sujet mais tu as une faute...
les cookies sont activé sur ton navigateur ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Yes
Invité n'ayant pas de compte PHPfrance

14 mars 2009, 23:32

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 :(

Yes
Invité n'ayant pas de compte PHPfrance

15 mars 2009, 01:03

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...

ViPHP
ViPHP | 1996 Messages

15 mars 2009, 01:22

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.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Yes
Invité n'ayant pas de compte PHPfrance

15 mars 2009, 01:29

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...

ViPHP
ViPHP | 1996 Messages

15 mars 2009, 02:36

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) ; 
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Yes
Invité n'ayant pas de compte PHPfrance

15 mars 2009, 14:16

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 mars 2009, 19:23

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, '/' ) ; 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Yes
Invité n'ayant pas de compte PHPfrance

16 mars 2009, 01:05

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:

Yes
Invité n'ayant pas de compte PHPfrance

16 mars 2009, 10:45

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:

Yes
Invité n'ayant pas de compte PHPfrance

16 mars 2009, 16:17

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 ?

ViPHP
ViPHP | 1996 Messages

17 mars 2009, 11:09

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 ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr