mettre à jour un enregistrement de la base de donnée grâce au sessions

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mettre à jour un enregistrement de la base de donnée grâce au sessions

par Sékiltoyai » 29 nov. 2007, 04:08

je récupère toutes les session non active et je met la valeur a 0 dans ma table mysql
Si tu as un enregistrement par session, tu vas saturer ton serveur. Pour nettoyer les sessions, on supprime tous les enregistrements obsolètes.

Et non on ne peut pas exécuter un script lors du nettoyage des sessions par php.

par szambaux » 27 nov. 2007, 11:52

ou alors est-ce qu'il y a un moyen de faire éxécuté a apache un script lorsqu'il détruit une session?

par szambaux » 27 nov. 2007, 11:51

pour nétoyer les enregistrement obselete,il me faut savoir les sessions actives et les sessions non active de mon serveur,

car je voulais faire queleque chose du genre:

je récupère toutes les session non active et je met la valeur a 0 dans ma table mysql

par Sékiltoyai » 27 nov. 2007, 11:21

Tu dois nettoyer les enregistrements obsolètes à chaque page.
Et concernant la page spéciale, soit tu règles le temps de connexion en conséquence, soit tu fais une réactualisation péridioque de la page, soit tu revois ton système, mais il n'y a pas vraiment beaucoup d'autres solutions…

par szambaux » 27 nov. 2007, 09:14

Le probleme que j'ai aussi c'est qu'il y a une page ou l'utilisateur doit pouvoir rester des heures dessu sans actualisé et sans cliquer nul par, la solution qui correspondait bien a ce que je voulais faire était le javascript mais si c'est si peut fiable...

par szambaux » 27 nov. 2007, 08:59

Merci de vos réponse, voila ce que j'ai fait, je remet a jour un champ time a chaque visite de page mais le probleme c'est que ca gere un temps d'inactivité mais si le user se deconnecte, il ne lance plus ce script que j'ai mis au début de chaque page, donc y me faut une solution pour lancer ce script toute les 10min par ex mais si je lance ce script à l'extérieur des pages vues par l'utilisateur, comment je récupère les variable de session propre à lui meme?

include ("deco.php"); 
define ('SESSION_TIMEOUT', "1800");
if(isset($_SESSION['user']))
{
if(time()-$_SESSION['last_access'] > SESSION_TIMEOUT)
  {
      logout();
}
 else
    {
        // On stocke l'heure de dernière connexion
        $_SESSION['last_access'] = time();
    }
[/code]

par Sékiltoyai » 26 nov. 2007, 22:54

Tu stocke la durée de session toi-même ?

Si oui tu peut effacer les sessions périmées a chaque fois que tu logues quelqu'un par exemple.

Sinon (mais là je ne m'y connais pas) tu doit pouvoir utiliser du javascript comme ceci :

Code : Tout sélectionner

<body OnUnLoad="javascript:detruireSession()">
Euh non, pas du tout.
Utiliser du javascript dans ce cas est une abération. Le javascript peut être désactivé, intentionnellement ou non, et le navigateur de l'utilisateur peut planter, n'exécutant alors pas le code javascript, la connexion peut sauter, …
Bref, on ne se base pas sur une technologie peu fiable et totalement controlable par le client pour ce genre de problèmes, cad engageant la sécurité et le comportement du logiciel.

Par contre, l'idée du timestamp est très bonne, c'est un concept très utilisé, notament par les sessions PHP classiques.

par momox » 26 nov. 2007, 17:35

Une des solutions les plus simple est un champ dont le timestamp est mis a jour a chaque page consultée.
Quand tu récupéres ce timestamp, tu regarde la différence entre la valeur actuelle du timestamp et la valeur stockée, et si elle est inférieur a un temps donné, l'utilisateur est considéré hors ligne ;)
@+

par samsayan » 26 nov. 2007, 17:35

Tu stocke la durée de session toi-même ?

Si oui tu peut effacer les sessions périmées a chaque fois que tu logues quelqu'un par exemple.

Sinon (mais là je ne m'y connais pas) tu doit pouvoir utiliser du javascript comme ceci :

Code : Tout sélectionner

<body OnUnLoad="javascript:detruireSession()">

mettre à jour un enregistrement de la base de donnée grâce a

par szambaux » 26 nov. 2007, 17:29

Bonjour, sur un site web que je suis en train de construire, lorsque l'utilisateur se loggue, un enregistrement mysql contenant son login et la valeur en ligne se met a jour en passant enligne=1, lorsqu'il se déconnecte avec le bouton un script va supprimer cet enregistrement, je voudrais trouver une solution pour que cela fonctionne lorsqu'il ferme salement son navigateur, ou alors dans le pire des cas quand le temps de ca session est dépassé.

Donc si vous avez un peu de temps à me consacrer ca serait trés sympa merci