Aller au contenu

Modifier un fichier de session manuellement


Sujets conseillés

Posté

Bonjour à tous,

Je cherche à modifier un fichier de session (qui porterait par exemple le nom sess_471516f9e4bd7ffab5449e9b5948da6a) manuellement. Toutefois, un fichier de session a une forme "sérialisée", existe-t-il des fonctions permettant de sérialiser et de déserialiser le contenu d'un fichier de session ? Ou alors doit on faire ça nous même avec des expressions régulières ?

Merci d'avance de vos réponses :)

Posté (modifié)

Non, il ne me semble pas, car PHP te permet déjà de modifier ces fichiers par $_SESSION...

Modifié par Théo B.
Posté

Il existe des fonctions pour (dé)sérialiser du contenu.

serialize
(PHP 3 >= 3.0.5, PHP 4, PHP 5)

serialize -- Generates a storable representation of a value

Ceci dit, je vois mal l'utilité de gérer les fichier de session. Au pire, tu peux gérer les sessions via la base sql, c'est (très) souvent employé, et ca te solutionnerait très probablement ton problème.

Posté (modifié)

Anonymus > J'ai essayé la fonction unserialize, mais aparemment la logique d'organisation d'un fichier de session n'est pas la même, ça n'a pas fonctionné...

Ceci dit, je vois mal l'utilité de gérer les fichier de session. Au pire, tu peux gérer les sessions via la base sql, c'est (très) souvent employé, et ca te solutionnerait très probablement ton problème.

En fait je vais expliquer mon problème pour comprendre pourquoi j'ai besoin de ça. Je veux créer un espace membre avec un système de messagerie. Pour économiser des ressources, j'utilise les sessions au lieu de rechercher les infos du membres dans la base de données à chaque page, le nombre de nouveaux messages est également récupéré. Toutefois, en cas de réception de nouveaux messages en pleine session, l'utilisateur destinataire doit savoir qu'il a des nouveaux messages, et ceci en temps réel. Alors plutôt que de faire la vérification dans MySQL à chaque page, je préfère modifier le fichier de session du destinataire.

Maintenant je me suis créé une classe PHP qui peut récupérer et modifier certaines données d'un fichier de session, certains n'aiment peut être pas la méthode (ce que je comprend), mais ça fonctionne, et ça évite des connexions supplémentaires à la base de données.

En tout cas merci de ta réponse, si tu as une autre idée pour mon problème qui peut m'éviter MySQL je suis toujours preneur :)

Modifié par John_attend
Posté (modifié)

Bonjour,

si ton site est du genre à fonctionner au complet en PHP (toutes les pages se chargent dans la page index.php par exemple(avec la fonction 'include()')) et que tu veux créer un espace membre sans avoir à retirer les infos de la db à chaque page, tu n'as qu'as les enregistrer dans des cookies lorsque l'utilisateur se 'log' a ton site...

ensuite, dans le head de ta page index, tu défénis des variables qui retireront les infos des cookies... comme ca tu n'aura pas a retirer les infos de la db a toute les pages... il faut seulement veiller a ne pas utiliser les variables que tu as choisi pour autre chose, car sinon les données seront perdus...

exemple pour la page index.php:

<head>
<?php
code pour les cookies

variables qui contiennent les infos
?>
</head>
<body>
<table>
<tr>
<!-- inclusion du header -->
<td><?php include("header.php"); ?></td>
</tr>
<tr>
<!-- inclusion du menu et de la page principale -->
<td><?php include("menu.php"); ?></td>
<td><?php include("page.php"); ?></td>
</tr>
<tr>
<!-- inclusion du footer -->
<td><?php include("footer.php"); ?></td>
</tr>
</table>
</body>

Si tu veux en apprendre plus au sujet de cette forme de page, fait moi signe...

Modifié par JoP
Posté
si ton site est du genre à fonctionner au complet en PHP (toutes les pages se chargent dans la page index.php par exemple(avec la fonction 'include()')) et que tu veux créer un espace membre sans avoir à retirer les infos de la db à chaque page, tu n'as qu'as les enregistrer dans des cookies lorsque l'utilisateur se 'log' a ton site...

Pourquoi avec des cookies ? Pourquoi pas avec des sessions ?

C'est plus sécurisé, l'utilisateur ne peut pas modifier lui même ses infos, en plus avec les sessions tu n'a pas de limites de types ou de tailles et tu es plus sûr d'être compatible...

En plus dans mon cas ça fonctionnera pas car si un utilisateur envoit un message à un autre utilisateur il ne le recevra pas en temps réel car les cookies resteront bloqués sur les informations qu'ils ont eu lors de la connexion. A moins que je n'ai pas tout saisi :P

Posté (modifié)
En plus dans mon cas ça fonctionnera pas car si un utilisateur envoit un message à un autre utilisateur il ne le recevra pas en temps réel car les cookies resteront bloqués sur les informations qu'ils ont eu lors de la connexion. A moins que je n'ai pas tout saisi tongue.gif

Si j'ai bien compris, tu veux que les utilisateurs de ton site web peuvent s'envoyer des messages et les recevoir directement comme si on clavarde sur msn

(Corrige moi si je me trompe)

Pour ce qui est des cookies, ce n'est pas moins sécuritaire... Il s'agit seulement que tu encrypte le nom d'utilisateur avant de l'insérer dans les cookies...

Dès lors, chaque utilisateurs aura un code unique et il sera donc impossible pour qui que ce soit de trouver le code unique d'un autre utilisateur...

-JoP

Modifié par JoP
Posté

Bonjour John_attend,

d'après le manuel de php (http://fr.php.net), les sessions sont par défaut gérées avec la serialisation/deserialisation wddx (http://fr.php.net/manual/fr/ref.session.php) qui peut etre utilisé via l'extension adéquate (http://fr.php.net/manual/fr/ref.wddx.php).

A priori du devrais pouvoir gérer ce que tu veux faire via la variable $_SESSION non ? tu n'aurais alors pas a t'occuper de l'enregistrement et de la relecture, tout serait fait automatiquement...

En ce qui concerne les cookies, le probleme est que l'utilisateur peut les désactiver, alors que pour les sessions, c'est l'admin qui choisit ;-)

Posté

Jeronimo > Merci :)

Si je veux modifier le fichier de session par cette méthode c'est parce que je veux modifier le fichier d'un autre utilisateur, pas de l'utilisateur executant le script... Sinon je voudrais utiliser le tableau $_SESSION il faudrait que je change l'utilisateur actuel de session le temps de modifier la valeur et ça ne me plait pas trop...

Posté

Tu détournes l'usage des sessions. Tu ne devrais pas avoir à toucher aux sessions, pour ce genre de choses. Si tu veux que le destinataire d'un message soit prévenu, il faut stocker le message quelque part. Pour cela, je te conseillerais l'usage des bases de données, puisqu'elles sont faites pour ca.

Si vraiment tu ne veux pas utiliser les bases de données, alors créées toi un fichier 'messages', que chaque utilisateur consultera en temps réel.

Le message est inscrit dans un fichier texte classique, et tu vas ouvrir le fichier texte correspondant au membre en question. Si une personne écrit quelque chose dans ce fichier texte, alors le membre le verra à la prochaine ouverture de page.

Mais n'utilises pas le fichier de sessions pour ca, il n'est pas fait pour ca.

D'ailleurs : un fichier de sessions doit être ouvert pendant la durée de la session, après il doit être détruit. Or si A écrit dans le fichier de session de B, qui vient juste de regarder une page. B n'ouvre plus de pages, donc ne verra pas le message de A. Ce message devrait disparaitre avec le fichier de session, qui... sera automatiquement supprimé.

Posté

Je ne stocke pas le message dans le fichier de session mais juste la valeur booléenne qui indique que l'utilisateur à un (des) nouveau(x) message(s).

Le message lui est stocké dans une BDD, simplement je veux pas avoir à vérifier à chaque page dans la BDD si il y a un nouveau message.

Mais je suis d'accord avec toi quand tu dis que la session n'est pas faite pour ça ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...