Problème setcookie et valeur affichée

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

2 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
//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> 
0
Kristo
 
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>
0
Zhp Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   37
 
et c'est quoi ton petit bug ? ^^
0
Kristo
 
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
0
Zhp Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   37
 
sur cette ligne :
// On définit le cookie en fonction de $_SESSION ['pseudo']
$pseudo ['pseudo'] = $_SESSION ['pseudo'];

tu défini $pseudo (qui est utiliser dans la page) mais pas le cookie
Il faut placer un autre setcookie() avec les informations dedans
0