Problème setcookie et valeur affichée
Kristo
-
Zhp Messages postés 198 Date d'inscription Statut Membre Dernière intervention -
Zhp Messages postés 198 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
C'est tout bête mais vu que je débute dans mon apprentissage en php je le suis encore plus..
Voilà, j'ai crée un cookie pour le pseudo dans mon script (entrainement avec un petit chat), le problème est que tant que le pseudo n'existe pas, la page m'affiche "pseudo" dans le champ de saisie.
Bof bof, j'aurai voulu avoir ce champ vide ou, éventuellement, qu'il y ait écrit "pseudo" mais qu'une fois qu'on clique à l'intérieur du champ de saisie ce dernier disparaît (vu dans pas mal de site) =)
Voici mes lignes:
//avant le doctype...
if (!isset ($_COOKIE ['pseudo']))
{
setcookie ('pseudo', 'pseudo', time() + 365*24*3600);
}
....
//dans la partie html
<p> <label for = "pseudo"> Pseudo </label>: <input type = "text" name = "pseudo" value = "<?php echo $_COOKIE['pseudo'] ?>"/></p>
...
Voilà Merci de votre aide
Kristo
C'est tout bête mais vu que je débute dans mon apprentissage en php je le suis encore plus..
Voilà, j'ai crée un cookie pour le pseudo dans mon script (entrainement avec un petit chat), le problème est que tant que le pseudo n'existe pas, la page m'affiche "pseudo" dans le champ de saisie.
Bof bof, j'aurai voulu avoir ce champ vide ou, éventuellement, qu'il y ait écrit "pseudo" mais qu'une fois qu'on clique à l'intérieur du champ de saisie ce dernier disparaît (vu dans pas mal de site) =)
Voici mes lignes:
//avant le doctype...
if (!isset ($_COOKIE ['pseudo']))
{
setcookie ('pseudo', 'pseudo', time() + 365*24*3600);
}
....
//dans la partie html
<p> <label for = "pseudo"> Pseudo </label>: <input type = "text" name = "pseudo" value = "<?php echo $_COOKIE['pseudo'] ?>"/></p>
...
Voilà Merci de votre aide
Kristo
A voir également:
- Problème setcookie et valeur affichée
- La page ne peut être affichée. (80710a06) - Forum Jeux vidéo
- Valeur relative et absolue ✓ - Forum Webmastering
- 80710a06 - Forum PS3
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
2 réponses
//avant le doctype... <?php if (!isset ($_COOKIE ['pseudo'])) { setcookie ('pseudo', 'pseudo', time() + 365*24*3600); $pseudo=""; }else{ $pseudo=$_COOKIE ['pseudo']; } .... ?> //dans la partie html <p> <label for = "pseudo"> Pseudo </label>: <input type = "text" name = "pseudo" value = "<?php echo $pseudo; ?>"/></p>
Mille merci Alain pour votre aide!!!
Cela m'a l'air bon mais j'ai comme un petit bug (peut-être du au fait que j'ai aussi une session dans mon script) je vous laisse regarder ^
^
<?php
// Démarrage de session
session_start ();
// Si le cookie n'existe pas on le créée
if (!isset ($_COOKIE ['pseudo']))
{
setcookie ('pseudo', 'pseudo', time() + 365*24*3600);
$pseudo="";
}
else
{
$pseudo=$_COOKIE ['pseudo'];
}
// Connexion à la BDD
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
// Si les champs pseudo et message sont présents et remplis
if (isset ($_POST ['pseudo']) && isset ($_POST ['message']) AND !empty ($_POST ['pseudo']) && !empty ($_POST ['message']))
{
// On ajoute l'entrée dans la bdd
$req = $bdd -> prepare ('INSERT INTO minichat (pseudo, message) VALUES (:pseudo, :message)') or die (print_r ($bdd->errorInfo ()));
$req -> execute (array (
'pseudo' => $_POST ['pseudo'],
'message' => $_POST ['message'] ))
or die (print_r ($bdd->errorInfo ()));
// On definit la session en fonction de $_POST ['pseudo']
$_SESSION ['pseudo'] = $_POST ['pseudo'];
// On définit le cookie en fonction de $_SESSION ['pseudo']
$pseudo ['pseudo'] = $_SESSION ['pseudo'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon tchat :)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<!-- Formulaire -->
<form action = "chat02.php" method = "post">
<p> <label for = "pseudo"> Pseudo </label> : <input type = "text" name = "pseudo" value = "<?php echo $pseudo; ?>"/></p>
<p> <label for = "message"> Message </label> : <input type = "text" name = "message"/> </p>
<p> <input type = "submit" value = "Envoyer"/> </p>
<p> <a href = "chat02.php" style = "text-decoration : none"> <input type = "button" value = "Rafraichir" /> </a> </p>
</form>
<?php
// On affiche les 10 derniers messages
$reponse = $bdd -> query ('SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT 0,10') or die (print_r ($bdd->errorInfo ()));
while ($donnees = $reponse -> fetch ())
{
echo '<p><strong>' . htmlspecialchars ($donnees ['pseudo']) . '</strong> : ' . htmlspecialchars ($donnees ['message']) . '<br />';
}
$reponse -> closeCursor ();
?>
</body>
</html>
Cela m'a l'air bon mais j'ai comme un petit bug (peut-être du au fait que j'ai aussi une session dans mon script) je vous laisse regarder ^
^
<?php
// Démarrage de session
session_start ();
// Si le cookie n'existe pas on le créée
if (!isset ($_COOKIE ['pseudo']))
{
setcookie ('pseudo', 'pseudo', time() + 365*24*3600);
$pseudo="";
}
else
{
$pseudo=$_COOKIE ['pseudo'];
}
// Connexion à la BDD
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
// Si les champs pseudo et message sont présents et remplis
if (isset ($_POST ['pseudo']) && isset ($_POST ['message']) AND !empty ($_POST ['pseudo']) && !empty ($_POST ['message']))
{
// On ajoute l'entrée dans la bdd
$req = $bdd -> prepare ('INSERT INTO minichat (pseudo, message) VALUES (:pseudo, :message)') or die (print_r ($bdd->errorInfo ()));
$req -> execute (array (
'pseudo' => $_POST ['pseudo'],
'message' => $_POST ['message'] ))
or die (print_r ($bdd->errorInfo ()));
// On definit la session en fonction de $_POST ['pseudo']
$_SESSION ['pseudo'] = $_POST ['pseudo'];
// On définit le cookie en fonction de $_SESSION ['pseudo']
$pseudo ['pseudo'] = $_SESSION ['pseudo'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon tchat :)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<!-- Formulaire -->
<form action = "chat02.php" method = "post">
<p> <label for = "pseudo"> Pseudo </label> : <input type = "text" name = "pseudo" value = "<?php echo $pseudo; ?>"/></p>
<p> <label for = "message"> Message </label> : <input type = "text" name = "message"/> </p>
<p> <input type = "submit" value = "Envoyer"/> </p>
<p> <a href = "chat02.php" style = "text-decoration : none"> <input type = "button" value = "Rafraichir" /> </a> </p>
</form>
<?php
// On affiche les 10 derniers messages
$reponse = $bdd -> query ('SELECT pseudo, message FROM minichat ORDER BY id DESC LIMIT 0,10') or die (print_r ($bdd->errorInfo ()));
while ($donnees = $reponse -> fetch ())
{
echo '<p><strong>' . htmlspecialchars ($donnees ['pseudo']) . '</strong> : ' . htmlspecialchars ($donnees ['message']) . '<br />';
}
$reponse -> closeCursor ();
?>
</body>
</html>
Dsl de répondre si tardivement et merci pour votre soutien,
Le bug concerne le pseudo, si je mets par exemple "Michel", après avoir envoyé un message sur le tchat, au lieu que le pseudo michel reste affiché, je me retrouve avec "mseudo" oO!! et si je mets "Jean" à ce moment il m'affiche "jseudo" donc,uniquement la première lettre du pseudo reste.. très louche. D'autre part, quand je ferme la page, le pseudo (du moins la première lettre) disparait comme si le cookie n'avait pas été crée :'(
Merci de m'éclaircir sur ce problème chers pros du php!!
Kristo
Le bug concerne le pseudo, si je mets par exemple "Michel", après avoir envoyé un message sur le tchat, au lieu que le pseudo michel reste affiché, je me retrouve avec "mseudo" oO!! et si je mets "Jean" à ce moment il m'affiche "jseudo" donc,uniquement la première lettre du pseudo reste.. très louche. D'autre part, quand je ferme la page, le pseudo (du moins la première lettre) disparait comme si le cookie n'avait pas été crée :'(
Merci de m'éclaircir sur ce problème chers pros du php!!
Kristo