Problème avec une liste et un cookie

Résolu
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 26 avril 2008 à 09:47
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 8 mai 2008 à 20:48
Salut,

Je créer un chat et pour savoir qui est connecté, j'utilise un système de cookie renouvel avec de l'ajax, enfin bref j'ai créer un cookie "pseudo" qui contient le pseudo choisis et quand je le lit avec un foreach je fait une liste avec un <li> pour chaque pseudo mais le problème c'est pour utiliser foreach il faut avoir un tableau donc j'ai utliser la fonction explode mais le pb c'est que j'utilise "-" comme séparateur et il est a la fin de mon cookie donc ça créer un nouveau <li> mais vide, comment puis-je y remédier ???

mon code de création du cookie :
----------------------------------------------------------------------
setcookie('pseudo', $_POST['pseudo'].'-');
----------------------------------------------------------------------

mon code de listage des pseudo :
----------------------------------------------------------------------
$cookies = explode('-', $_COOKIE['pseudo']);
foreach ($cookies as $cookie) {
echo "<li>", $cookie, "</li>", "
";
}
----------------------------------------------------------------------

Merci d'avance

Si t'a besoin d'aide, MP !!!

38 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 avril 2008 à 10:13
le cookie est chez le client, ca ne peut pas fonctionner. t'as des tonnes de scripts du genre ici.
3
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
26 avril 2008 à 10:15
Si le '-' est toujours à la fin il suffit de l'enlever.

$cookies = explode('-', substr($_COOKIE['pseudo'],0,strlen($_COOKIE['pseudo'])-1));

ou alors

$cookies = explode('-', $_COOKIE['pseudo']);
if(isset($cookies[count($cookies)]) && $cookies[count($cookies)]=="")unset($cookies[count($cookies)]);

Grrrrrrrrrrr
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 10:24
Hello,

les sessions ne changeront pas grand chose (enfin si...mais tu devrais lire toutes les sessions actives contenues dans le répertoire de sessions de ton serveur). Tu n'as qu'une seule session par utilisateur (comme pour les cookies). Donc forcément, de manière aussi basique, ton code ne peut voir qu'un seul pseudo.
En clair, chaque utilisateur crée un fichier de session ou de cookie, c'est pareil. La différence c'est que les fichiers de cookie sont sur l'ordinateur de l'utilisateur, et donc tu ne peux pas accéder à tous dans ton script, alors que les fichiers de session sont sur ton serveur, tu peux donc tous les lire en même temps.
Une autre solution est de créer un fichier temporaire avec tous les utilisateurs, qui fonctionnerait cmme une session : c'est à dire, qui serait régulièrement nettoyé pour enlever les utilisateurs qui ne sont plus actifs.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:32
Un truc du genre : preg_match_all('`pseudo\|S:[0-9]+:"([^"]+)`', $sSessionContents, $aRes);
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:50
Utilise session_save_path()
http://www.php.net/manual/en/function.session-save-path.php
pour sauvegarder les sessions de CETTE application dans un répertoire que tu contrôles. Et ains itu n'auras que les fichiers de session de cette application. Donc tous les fichiers seront ok.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:58
Heu...file_get_contents() est le plus simple. Mais fread est ok aussi.
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 10:19
Salut,

@coucou747 : si je n'utilise pas les cookies, que dois-je utiliser ??? j'ai essayé les sessions mais ça ne marchait pas !!!

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 10:47
Salut malalam,

comment puis je faire pour les fichiers de session ? je préfère cette solution car l'autre me parait un peu plus compliqué, et puis je ne sais pas comment renouveler le fichier car avec les cookies, c'était facile, si le cookie est la alors l'utilisateur est toujours la sauf si il est inactif depuis plus de 5 minutes !!!

Si t'a besoin d'aide, MP !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 10:57
Tu n'as pas compris : tu ne vois qu'un seul cookie par connexion au serveur. Ton script ne voit qu'une connexion, donc tu ne vois qu'un cookie dans tous les cas. Ton idée ne fonctionne pas.
Tu dois regarder où sont stockées les sessions sur ton serveur (le cas échéant, tu changes le répertoire). Là, tous les fichiers présents sont des dessions "actives" (qui n'ont pas encore été nettoyées par le grbage collector en tous cas). Il te suffit de les parser, un par un. Mais attention, le contenu des sessions est linéarisé...et par défaut, cette linéarisation n'est pas celle de la fonction serialize() de php. Il te faut donc vraiment parser le contenu des fichiers pour en extraire le pseudo (ce sera relativement facile, le masque sera toujours le même).
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 11:04
Pour les cookie, j'avais compris, je te disais ma façon de penser avant votre intervention !!!

Par contre pour les session... je ne sais pas ou je dois regarder, je suis sous wamp2 (je ne suis pas sur : temp mais je ne suis pas sur car tout les nom de fichier commence par sess_ et a la fin il y a session_dir mais bon) par contre après ça se complique, je fais comment pour trouver le masque et pour parser ???

merci d'avance

Si t'a besoin d'aide, MP !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:11
C'est bien le répertoire.
Bon...mets ici le contenu d'un de ces fichiers.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 11:18
ok, tiens, il y a celui la que j'utilise pour mon script pour ne pas avoir a taper le pseudo, le visiteur le tape une fois, après il est automatiquement ajouté avec les session :

pseudo|S:7:"nicolas";

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 11:33
merci !!!

Si t'a besoin d'aide, MP !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:41
Mais sur tous les fichiers hein, puis tu récupères chaque résultat.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 11:46
oui, mais par contre mes fichiers de codes se trouvent dans le repertoire www alors que les sessions se trouvent dans temp comment puis je faire pour récupérer les fichier ? fopen ? fread ? et je fais comment pour ne récupérer que les session qui m'appartiennent : c'est a dire qui sont censsé s'appelléent pseudo ??

Si t'a besoin d'aide, MP !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:50
et après oui, ce que tu vceux pour lire un fichier (perso, étant tjrs en PHP5, j'utilise file_get_contents()).
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 11:54
ok, merci, le mieux, c'est fopen, fread, fwrite et fclose ou file_get_content() ?

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 12:01
ok, va pour file_get_contents(), merci !!!

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 avril 2008 à 12:37
salut, on fait comment pour lire tout les fichier que contient un répertoire ?

Si t'a besoin d'aide, MP !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
27 avril 2008 à 12:58
Re,

malalam, j'ai trouvé la solution pour lire tout les fichier d'un repertoire avec opendir mais après un autre problème se créer, il parait que par défaud, je n'ai pas le drois d'accèder au dossier ou sont stokées les sessions et qu'il faut que je créer un autre dossier www avec un autre php.ini séparé de l'autre !! y a t'il une autre solution ?

Si t'a besoin d'aide, MP !!!
0
Rejoignez-nous