Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/05/2011, 11h02   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut positionner un cookie après avoir fait des affichages

Bonjour,

j'essaie de trouver une astuce pour faire un truc normalement impossible.
Je m'y prends comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title>cookie</title>
 
 
</head>
<body>
 
<a href="cookie.php">envoyer un cookie</a><br>
Valeur du cookie : <?php echo $_cookie['cookie']."<br>"; ?>
</body>
</html>
et cookie.php :
Code :
1
2
3
<?php 
setcookie("cookie",'Valeur de test');
?>
Mon idée étant, que quand j'aurai à positionner un cookie, je mets ça dans un fichier séparé, et je l'inclue via une iframe. Mais ça ne marche pas (la valeur affichée reste vide) : est-ce que ça pourrait marcher ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 12h40   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
C'est $_COOKIE
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 14h52   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
effectivement, ça marche mieux...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h00   #4
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Bonjour,

J'ai décoché "résolu", car avec un nouvel essai, nouvel échec (pas de cookie). Maintenant, je fais :
Code :
1
2
3
4
5
<form action="cookie.php" method="post">
 nom du cookie :<input name="cookie" type="text"><br>
 <input type="submit">
</form>
Valeur du cookie : <?php echo $_COOKIE['cookie']."<br>"; ?>
et l'action est :
Code :
1
2
3
4
5
 
<?php 
$cookie=$_POST['cookie'];
setcookie($cookie,'Valeur de test2');
?>
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h05   #5
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
$cookie dans ton cas est le nom du cookie et non sa valeur.
Donc si tu rentres autre chose que "cookie" dans ton input text il est normal de ne pas retrouver le cookie à l'affichage.

PS : j'ai testé ton code et il est fonctionnel.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h19   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Ta réponse m'a mis un doute, mais j'ai regardé comment j'avais déjà fait, et c'était bien comme ça.
Et toi, tu ferais comment ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 11h32   #7
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Code php :
1
2
3
4
5
6
7
8
<form action="cookie.php" method="post">
 nom du cookie :<input name="cookie" type="text"><br>
 <input type="submit">
</form>
<?php
if( !empty($_GET['nom_cookie']) )
  echo "Valeur du cookie : {$_COOKIE[$_GET['nom_cookie']]}<br>"; 
?>
Code php :
1
2
3
4
5
<?php 
$cookie=$_POST['cookie'];
setcookie($cookie,'Valeur de test2');
header("Location:formulaire.php?nom_cookie={$_POST['cookie']}");
?>
Mais je ne vois pas tellement le but de faire une telle chose.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 14h16   #8
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Moi non plus, mais en voyant ta réponse, j'ai compris que ce n'est pas ce que je voulais faire (évidemment, ce n'est qu'un test). Cela dit, mon idée ne marche pas : en fait, je cherche un moyen de positionner un cookie après avoir fait un affichage (ce qui est théoriquement impossible). Ce que j'ai essayé est le chose suivante :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php
session_start();
?>
<form action="cookie.php" method="post">
 nom du cookie :<input name="cookie" type="text"><br>
 <input type="submit">
</form>
<?php
echo "valeur du cookie :".$_COOKIE['val_cookie']."<br>";
?>
cookie.php :
Code :
1
2
3
4
5
6
<?php 
session_start();
echo 'coucou';
?>
<iframe src="set_cookie.php" frameborder=0></iframe>
<a href="cookie2.php">retour</a>
set_cookie.php :
Code :
1
2
3
4
5
<?php 
session_start();
$cookie=$_POST['cookie'];
setcookie(val_cookie,$cookie);
?>
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 14h42   #9
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Si je comprends bien tu veux un affichage sans avoir à recharger la page ?
Ou bien simplement ne pas perdre le contenu du formulaire ?

Dans le premier cas si tu veux absolument passer par du PHP pour la création du cookie il faudra dans ce cas utiliser de l'Ajax pour du chargement dynamique.
Ou bien on peut créer des cookies avec Javascript et dans ce cas tu ne postes plus le formulaire et donc plus de rechargement de page.

Et si c'est juste une histoire de ne pas perdre le contenu du formulaire :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if( !empty($_POST['cookie']) )
{
  $cookie=$_POST['cookie'];
  setcookie($cookie,'Valeur de test2');
}
?>
<form action="#" method="post">
 nom du cookie :<input name="cookie" type="text" value="<?php echo (!empty($cookie)) ? $cookie : ""; ?>"><br>
 <input type="submit">
</form>
<?php
  echo "Valeur du cookie : ";
  echo (isSet($_COOKIE[$cookie])) ? $_COOKIE[$cookie] : "";
  echo "<br>"; 
?>
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h23   #10
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
Si je comprends bien tu veux un affichage sans avoir à recharger la page ?
Je ne suis pas sûr de me faire comprendre, car ce n'est ni l'un ni l'autre : mon but est de pouvoir affecter une valeur à un cookie après avoir fait un affichage (théoriquement impossible, vu qu'un cookie est un en-tête et que http interdit l'envoi d'un en-tête après, par exemple, un affichage). Et le formulaire ne sert que les besoins du test : pouvoir affecter la valeur du cookie dynamiquement. (sans retransférer)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h29   #11
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Oui mais quel est l'intérêt de positionner un cookie après l'affichage ?
On peut toujours séparer le code de l'affichage donc...
Je pense que faudrait remonter à la source du conflit là...

On affiche en fonction d'un traitement, donc on sait à l'avance ce que l'on va afficher, donc on peut avant l'affichage affecter le cookie.
De plus l'affectation du cookie est un traitement donc on boucle encore une fois là...

Si tu nous donnais un exemple pratique de ce que tu nécessites de faire on pourrait peut être t'aider... Car là à par te dire que tu veux casser une technologie...
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h38   #12
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Suppose qu'un site est affiché (donc affichage), que l'utilisateur fait certaines actions (des choix) et que ça doit être mémorisé pour sa prochaine visite sur le site : c'est ça le but.
Et pour être plus précis, sachant qu'il s'agit d'un site qui est visité par des mal-voyants, je vais mettre des boutons qui permettent de changer la taille des caractères, et ce réglage doit être mémorisé (ça ne serait pas confortable de devoir le refaire à chaque fois). Et si l'idée du cookie ne marche pas, j'en ai une autre : mettre cette info dans une base MySQL...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h57   #13
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
Et donc ? Je ne vois pas où est le souci avec cette problématique.
On en revient toujours à un modèle où le traitement peut être fait avant l'affichage.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h34   #14
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
le traitement peut être fait avant l'affichage
Non, car il faut afficher au moins la page d'accueil, pour que l'utilisateur puisse faire un choix (qui doit être mémorisé).
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h42   #15
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 802
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 802
Points : 1 515
Points : 1 515
1) Affichage page d'accueil
2) clic sur bouton redirigeant vers page de traitement
3) page de traitement enregistrant le cookie
4) redirection vers la page d'accueil
5) récupération des cookies et affichage en conséquence

Je ne vois pas où est le problème... C'est un cheminement tout ce qu'il y a de plus normal !
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 16h50   #16
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Tu as parfaitement raison et je voyais un problème là où il n'y en a pas...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h34.


 
 
 
 
Partenaires

Hébergement Web