[php] Comment faire un refresh, un vrai ?

Comment faire un refresh, un vrai ? [php] - Programmation

Marsh Posté le 05-06-2002 à 00:05:13    

Bonjour !
 
 
Voila, j'aimerais terminer ce soir mes histoires de cookies ...
 
Donc, si j'ai bien compris, lorsque j'envoie un cookie, j'ai besoin de rafraichir ma page si je veux que les infos du cookie soient prises en compte, c'est bien ça ? Et pareil quand je met à jour un cookie ...
 
Alors je me demandais quelle était la meilleure manière de faire un refresh correct ? Dois-je passer par un truc comme :
 
echo '<META HTTP-EQUIV="refresh" CONTENT="15; URL=xxxxxxxx.php">' ??
 
Ou bien est-ce qu'il vaut mieux utiliser header(location : url) ??
 
 
Voila, je ne demande que cela ! J'ai peur d'abuser, mais si quelqu'un pouvait m'élcairer rapidement, ce serait vraiment bien ! J'aimerais terminer ça ce soir, je déteste devoir arrêter au beau milieu d'un truc ;o)
 
Merci à tous !


Message édité par yannick_frere le 06-05-2002 à 00:06:02
Reply

Marsh Posté le 05-06-2002 à 00:05:13   

Reply

Marsh Posté le 05-06-2002 à 01:21:46    

S'il vous plait, aidez-moi !
Je ne sais vraiment plus quoi faire, y a rien qui marche :(
 
J'ai un fichier qui contient ceci :
 
<?php
 setcookie(USERNAME,$a,time()+10000,"","",1) or die('Echec envoi cookie 1';) ;
 setcookie(PASSWORD,$b,time()+10000,"","","1" ) or die('Echec envoi cookie 2';) ;
 print('Cookie envoyé : USERNAME : '.$a.', PASSWORD : '.$b.'<br>';) or die('Echec envoi cookie 3';);
 print('<head><META HTTP-EQUIV="refresh" CONTENT="1; URL=index.php"></head>';) or die(''Echec envoi cookie 4';);
?>
 
Mes fichiers l'appellent pour envoyer des cookies et il est situé dans la racine de mon compte ...
Donc, je passe simplement en paramètre les valeurs du username ($a) et celle du password ($b) ...
 
Lorsque j'exécute ce fichier en entrant manuellement une url, voici ce qui se passe : il n'y a aucune erreur (cf tous les die) et la page renvoie bien vers index.php. Le cookie est créé et contient les bonnes valeurs ... sauf qu'il n'est pas crypté, alors que j'ai mis le 1 à la fin ! Ensuite, je pense que la date est également mauvaise, puisque lorsque l'index est appelé à la fin, il ne trouve pas de cookie et aucune valeur ne sort ...  
J'ai placé ce fichier dans un sous-répertoire :
 
<?php
echo $USERNAME ;
echo $PASSWORD ;
?>
 
Y a que ça dedans ... ben quand je l'appelle après l'envoi des fichiers, il n'affiche rien ... Même quand je rafraichi plusieurs fois (c'est d'ailleurs pour cela que je pense que mon cookie est expiré dès la réception, ce qui est super utile ...)
 
Que puis-je faire ??  :(  
 
 
 
P'tit rappel : je cherche une manière élégante et simple de faire en sorte que :
- mes cookies soient correctement envoyés ;
- que je puisse faire en sorte que les infos envoyées dans le cookie soient disponible aux autres pages du site ... A chaque fois que j'envoie de nouvelles valeurs à mes variables, les pages de mon site continuent de s'afficher avec les anciennes --> je suppose qu'il faut rafraichir la page, mais comment ?
 
 
Merci ! Svp, aidez un pov' débutant désespéré ...  :(

Reply

Marsh Posté le 05-06-2002 à 09:02:14    

header ("location:url" );  
avant toute sortie html.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 05-06-2002 à 09:07:49    

La déclaration de tes cookies me paraît bizarre :

Code :
  1. setcookie(USERNAME,$a,time()+10000,"","",1)


 
Les paramètres 4 et 5 sont pour le chemin et le domaine, or tu ne mets rien (chaine vide "" ), donc ton cookie ne s'applique à rien du tout. Si tu n'es pas sûr, mieux vaut ne pas mettre les paramètres comme ça le chemin et le domaine courant seront utilisés.
Le dernier paramètre (1) sert si tu utilises une connexion sécurisée (https) c'est ton cas ?
 
Donc le plus simple :

Code :
  1. setcookie(USERNAME, $a, time() + 10000);
  2. header("Location: ma_page.php" );

Reply

Marsh Posté le 05-06-2002 à 13:54:41    

Merci à vous deux ^^
 
Je vais essayer ça tout de suite !
 
Le header va-t-il réellement faire un refresh convenable et me permettre de charger les bonnes valeurs de mes cookies ?
 
Sinon, j'ai trouvé ceci sur phpbuilder (enfin je crois) :
 
 
PHP scripts often generate dynamic HTML that must not be cached by the client browser or any proxy caches between the server and the client browser. Many proxies and clients can be forced to disable caching with  
 
 
  1  
  2 header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );    // Date in the past
  3 header ("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );  
  4                                                       // always modified
  5 header ("Cache-Control: no-cache, must-revalidate" );  // HTTP/1.1
  6 header ("Pragma: no-cache" );                          // HTTP/1.0
  7

 
 
Apparemment, cela forcerait le navigateur à réexécuter la page et non à la rechercher dans le cache ... Est-ce que ça pourrait m'être utile pour charger les bonnes valeurs de mes cookies ? Est-ce qu'il y a des contre-indications (augmentation des temps de chargement, au cas où le navigateur n'irait pas non plus rechercher les images dans le cache ...)
 
 
Merci pour votre aide !

Reply

Marsh Posté le 05-06-2002 à 14:12:25    

gm_superstar> Ce que tu m'as conseillé pour les cookies marche vraiment bien ! J'ai placé le header juste en dessous et la page est bien redirigée !
 
Y a juste un petit problème encore :o/ C'est que ma page "send_cookie.php" redirige bien vers "index.php", mais "index.php" conserve les données de l'ancien cookie (avant l'appele de "send_cookie.php" ...
Que puis-je faire pour que la page "index.php" prenne directement les bonnes valeurs ?
 
Après, je vous ennuierai plus, promis ^^ Y a plus que ça qui marche pas ^^

Reply

Marsh Posté le 05-06-2002 à 14:38:50    

yannick_frere a écrit a écrit :

gm_superstar> Ce que tu m'as conseillé pour les cookies marche vraiment bien ! J'ai placé le header juste en dessous et la page est bien redirigée !
 
Y a juste un petit problème encore :o/ C'est que ma page "send_cookie.php" redirige bien vers "index.php", mais "index.php" conserve les données de l'ancien cookie (avant l'appele de "send_cookie.php" ...
Que puis-je faire pour que la page "index.php" prenne directement les bonnes valeurs ?
 
Après, je vous ennuierai plus, promis ^^ Y a plus que ça qui marche pas ^^



Oui c'est normal, parce que quand on utilise la fonction header() on reste dans la même connexion HTTP, donc ton cookie ne renvoie pas la nouvelle valeur.
 
Il faut passer par une page html intermédiaire qui te redirigera vers le nouveau script avec une balise <meta>.
 
Donc à la fin de ton premier script, tu envoies ceci  :

Code :
  1. <html>
  2. <head>
  3. <meta http-equiv="refresh" content="1;url=index.php">
  4. </head>
  5. <body>
  6. Cookie envoyé...
  7. </body>
  8. </html>


 
Le <body> est optionnel.
Tu peux aussi jouer sur le temps que s'affiche ce message (ici 1 seconde)

Reply

Marsh Posté le 05-06-2002 à 15:14:44    

Soit béni, gm_superstar !
 
Tout fonctionne parfaitement maintenant !
 
 
Vraiment, je te dis un grand merci pour ton aide ! C'était très sympa de ta part !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed