Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 24/06/2007, 22h44   #1
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Par défaut [Cookies] Cookie pour un tchat : retenir le pseudo

Bonsoir,

j'ai cherché sur internet mais mon problème n'a pas été entièrement résolu. J'ai un tchat et un cookie pour retenir le pseudo grâce à la case "Retenir le pseudo"
Le cookie retient le pseudo si l'on reste sur la page du tchat mais si l'on va sur une autre page du site et qu'on revient sur le tchat, le pseudo n'est plus là...

Voilà mon code (pas entier) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
    {
        // D'abord, on se connecte à MySQL
mysql_connect("*****","*****","*****") or die("erreur de connexion");
mysql_select_db("*****")or die("erreur de sélection de base de données");
 
        // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
        $message = htmlentities ($_POST['message'], ENT_QUOTES);
        $pseudo = htmlentities ($_POST['pseudo'], ENT_QUOTES);
 
        // Ensuite on enregistre le message
        $time = time() + 3600;
            mysql_query("INSERT INTO chat VALUES('', '$pseudo', '$message','$time')")or die(mysql_error());
 
        // On se déconnecte de MySQL
        mysql_close();
    }
}
?>
 
<?php
//$pseudo va contenir le pseudo ... indépendamment de s'il est défini (au revoir les erreur de type undefined) et de quel manière (par POST ou COOKIE ...)
$pseudo="";
// si le cookie n'est pas défini
if(!isset($_COOKIE['pseudo']))
{
    // on vérifie que le formulaire a bien été rempli
    if(!empty($_POST['pseudo']))
    {
        // on stock la valeur dans le cookie, et dans $pseudo
        $timestamp_expire = time() + 365*24*3600;
        setcookie('pseudo', $_POST['pseudo'], $timestamp_expire);
        $pseudo = $_POST['pseudo'];
    }
}
//s'il existe déjà, on stock la valeur dans $pseudo
else
    {
    $pseudo = $_COOKIE['pseudo'];
 
 // Création des cookies
$expire = time() + 365*24*3600; // valable 1 ans
setcookie('pseudo', $_post['pseudo'], $expire);      
    }
?>
 
<script language="javascript">
function smylies(texte){
document.formulaire.message.value+=" "+texte;
}</script>
 
    <form name="formulaire" action="chat.php" method="post" >
        <table>
            <tr>
                <td>Pseudo :</td>
                <td><input type="text" name="pseudo"
 
               <?php
if((isset($_POST['pseudo'])) AND  (!empty($_POST['pseudo']))) // Si la variable existe et qu'elle est remplie
        {
                $pseudo = htmlentities ($_POST['pseudo'], ENT_QUOTES); // On neutralise le HTML
                echo 'value="'. $pseudo . '"';
        }
?> value"<?php echo $pseudo; ?>"/></td>
 
            </tr>
            <tr>
                <td>Message :</td>
 
                <td><textarea cols="55" rows="3" name="message" ></textarea></td>
 
            </tr>
<font face="Verdana" size="1"><a href="javascript:void(0);" onClick="smylies(':-D');"><br><img border="0" src="images/smiles/smile.gif" alt="Emoticone Smile !"></a><a href="javascript:void(0);" onClick="smylies('8-)');"><img border="0" src="images/smiles/cool.gif" alt="Emoticone Cool !"></a><a href="javascript:void(0);" onClick="smylies(';-)');"><img border="0" src="images/smiles/good.gif" alt="Emoticone Good !"></a><a href="javascript:void(0);" onClick="smylies(';-D');"><img border="0" src="images/smiles/happy.gif" alt="Emoticone Rire !"></a><a href="javascript:void(0);" onClick="smylies(':i)');"><br><img border="0" src="image/smiles/icon1.gif" alt="Emoticone sourire !"></a><a href="javascript:void(0);" onClick="smylies(':-(');"><img border="0" src="images/smiles/decu.gif" alt="Emoticone Deçu !"></a><a href="javascript:void(0);" onClick="smylies('?-)');"><img border="0" src="images/smiles/clin_oeil.gif" alt="Emoticone Clien d'Oeil !"></a><a href="javascript:void(0);" onClick="smylies(':-O');"><img border="0" src="images/smiles/surprised.gif" alt="Emoticone Etonné !"></a><a href="javascript:void(0);" onClick="smylies('?-(');"><img border="0" src="images/smiles/what.gif" alt="Emoticone Quoi !"></a><a href="javascript:void(0);" onClick="smylies('8-S');"><img border="0" src="images/smiles/fou.gif" alt="Emoticone Fou !"></a><a href="javascript:void(0);" onClick="smylies('^^');"><img border="0" src="image/smiles/icon13.gif" alt="Emoticone Rire !"></a><a href="javascript:void(0);" onClick="smylies(':-p');"><img border="0" src="image/smiles/icon16.gif" alt="Emoticone Langue !"></a><a href="javascript:void(0);" onClick="smylies(':-0');"><img border="0" src="images/smiles/hein.gif" alt="Emoticone Gêné !"></a><a href="javascript:void(0);" onClick="smylies('m-)');"><img border="0" src="image/smiles/icon25.gif" alt="Emoticone Espion !"></a><a href="javascript:void(0);" onClick="smylies('=>');"><img border="0" src="image/smiles/icon10.gif" alt="Emoticone Flèche !"></a>
</font>
            <tr>
                <td><input type="checkbox" name="cookie" /></td>
 
                <td>Retenir le pseudo ?</td>
            </tr>
            <tr>
                <td colspan="2" ><input type="submit" class="bouton" value="Envoyer" /></td>
            </tr>
        </table>
    </form>
Merci beaucoup
bonne soirée
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 09h21   #2
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Ce n'est pas parce que tu utilises $_post au lieu de $_POST ? Ce qui fait que tu rempli ton cookie avec une chaîne vide (je crois que php gère la casse des caractère pour les noms de variables) Sinon je ne vois pas trop pourquoi ça ne marcherais pas...
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 12h20   #3
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Merci, j'ai remplacé.... mais le cookie retient toujours le pseudo si l'on reste sur la page du tchat mais si l'on va sur une autre page du site et qu'on revient sur le tchat, le pseudo n'est plus là...

Merci d'avance
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 08h57   #4
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Question bête... est ce que tu acceptes les cookie sur ton navigateur?
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h08   #5
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Oui, il y a les cookies acceptés
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h11   #6
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Mmmmmh

En fait quand tu arrive d'une autre page du site tu rentres dans cette partie de code:
Code php :
1
2
3
4
5
6
7
8
9
 
else
    {
    $pseudo = $_COOKIE['pseudo'];
 
 // Création des cookies
$expire = time() + 365*24*3600; // valable 1 ans
setcookie('pseudo', $_post['pseudo'], $expire);      
    }

Seulement rien ne te dis que $_POST['pseudo'] existe.... Donc il faudrait mieux faire setcookie('pseudo', $pseudo, $expire);
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h32   #7
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Merci pour ta réponse.
j'ai mi ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// si le cookie n'est pas défini
if(!isset($_COOKIE['pseudo']))
{
    // on vérifie que le formulaire a bien été rempli
    if(!empty($_POST['pseudo']))
    {
        // on stock la valeur dans le cookie, et dans $pseudo
        $timestamp_expire = time() + 365*24*3600;
        setcookie('pseudo', $_POST['pseudo'], $timestamp_expire);
        $pseudo = $_POST['pseudo'];
    }
}
//s'il existe déjà, on stock la valeur dans $pseudo
else
    {
    $pseudo = $_COOKIE['pseudo'];
 
 // Création des cookies
$expire = time() + 365*24*3600; // valable 1 ans
setcookie('pseudo', $pseudo, $expire);    
    }
?>
Ca ne retient toujours pas le pseudo quand on change de page.
merci
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h40   #8
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Et si dans le else que je t'ai dis tu met un print_r($_COOKIE) ça s'affiche ou pas? Qu'on sache si on entre bien dans ce else.
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h46   #9
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Oui, on entre dans ce else, car j'ai cela qui s'affiche avant le formulaire :

Code :
Array ( [checked] => checked [ccguid] => 2007040711085406cac13e0b0450d2 [style] => automne [PHPSESSID] => dd035a37d91ee342d41487d06a58a21a [pseudo] => FandeMac )
Mais il n'y a rien dans la case "Pseudo"
on va y arriver
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h56   #10
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Arf on est bigleu

value"<?php echo $pseudo; ?>"/></td> => sans = après value ça risque pas de marcher...
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 16h30   #11
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
c'est-à-dire ?
iBook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 16h32   #12
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Code html :
1
2
3
4
5
6
7
8
9
10
11
12
<table>
            <tr>
                <td>Pseudo :</td>
                <td><input type="text" name="pseudo"
 
               <?php
if((isset($_POST['pseudo'])) AND  (!empty($_POST['pseudo']))) // Si la variable existe et qu'elle est remplie
        {
                $pseudo = htmlentities ($_POST['pseudo'], ENT_QUOTES); // On neutralise le HTML
                echo 'value="'. $pseudo . '"';
        }
?> value="<?php echo $pseudo; ?>"/></td>
__________________
Such is the situation in our Fallen Galaxy
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 16h36   #13
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 2
Points : 2
Ca y est !! j'ai compris

C'est parfait!

Merci BEAUCOUP
Résolu !!!!
iBook 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 12h23.


 
 
 
 
Partenaires

Hébergement Web