Rygnes > j'ai peur de pas comprendre. Tu cherches à faire un système met en variable de session le fait qu'un joueur fait une quelconque activité et doit donc refuser toute autre activité ...
En plus d'être très lourd à l'usage et à la programmation ... je pense pas que ça résolve le problème. L'information doit être centralisée.
J'ai beau relire ton message et le code fourni ... je comprends pas la question ^^. Je vais essayer d'y répondre.
Je pars de l'hypothèse que j'ai compris le problème tel que ré-écrit plus haut et je vais montrer un contre exemple.
J'ouvre 2 navigateurs indépendants. Appellons les IE et FF.
Je me connecte à ton jeu avec IE : Ma variable de session activité est à False, je ne bosse pas.
Je me connecte à ton jeu avec FF maintenant : ma variable de session activité est à False, je ne bosse pas.
Avec IE, je quémande un travail : je bosse. Ma variable de session IE est donc maintenant à True.
Je rafraichis ma page avec FF ... et là comme ma variable de session est à False ... je peux continuer à demander du travail.
=> Anomalie ...
Typiquement, l'information "je travaille" doit être en base de donnée ! tu dois vérifier avant chaque affichage de proposition de job si ton personnage travaille ou non (et donc s'il peut accepter du boulot ou pas). Tu dois faire la même vérification après que le joueur ai cliqué sur le bouton 'Postuler'.
Je veux pas balancer ^^, mais il me semble que Sephi-chan a fait de très belles réponses à ce sujet sur ce même forum !
Kéké qui n'arrive pas à lire ton code.
PS : je prends toujours 2 plombes à répondre aux messages, j'ai pas vu le message de Holy. Etant donné qu'il est mal vu de faire des doubles posts, j'édite celui là ...
Holy >
Alors pourquoi dis-je que ton système n'est pas le plus efficace ? Pourquoi a ton avis avons-nous inventé les bases de donnée ? Il serait prétentieux de donner une réponse exhaustive à ces deux questions, mais : la gestion de donnée de données concurrentielles et la facilitée de mise à jour seraient 2 pistes de réflexion.
En gros, ça prend pas tellement plus de temps de faire une requête SQL à ta base de donnée, que de tester la présence ou l'absence d'un fichier correctement formaté. Par contre, la gestion des droits de fichiers varient selon les OS ... Si tu veux débannir un joueur, auras-tu les droits de suppression du fichier dans ton nouvel hébergeur ?
Aujourd'hui, tu utilises ton système de fichier pour le bannissement. Demain, tu en auras besoins pour d'autres variables ... vas tu faire un système compliqué de fichier à chaque fois ?
La technique que tu emploies était très utilisée avant ... Ton fichier s'appelle un "Flag" si tu veux faire des recherche Google sur cette technique.
Sache qu'il existe une autre technique qui permet de modifier directement la Session d'un autre joueur ... Je ne l'utilise pas, mais ce n'est pas le cas de certains créateur de jeu sur ce forum... En mon sens cette autre technique doit être bien maitrisée sinon c'est le moyen le plus directe d'aller à la catastrophe ...
kéké (bis)
En plus d'être très lourd à l'usage et à la programmation ... je pense pas que ça résolve le problème. L'information doit être centralisée.
J'ai beau relire ton message et le code fourni ... je comprends pas la question ^^. Je vais essayer d'y répondre.
Je pars de l'hypothèse que j'ai compris le problème tel que ré-écrit plus haut et je vais montrer un contre exemple.
J'ouvre 2 navigateurs indépendants. Appellons les IE et FF.
Je me connecte à ton jeu avec IE : Ma variable de session activité est à False, je ne bosse pas.
Je me connecte à ton jeu avec FF maintenant : ma variable de session activité est à False, je ne bosse pas.
Avec IE, je quémande un travail : je bosse. Ma variable de session IE est donc maintenant à True.
Je rafraichis ma page avec FF ... et là comme ma variable de session est à False ... je peux continuer à demander du travail.
=> Anomalie ...
Typiquement, l'information "je travaille" doit être en base de donnée ! tu dois vérifier avant chaque affichage de proposition de job si ton personnage travaille ou non (et donc s'il peut accepter du boulot ou pas). Tu dois faire la même vérification après que le joueur ai cliqué sur le bouton 'Postuler'.
Je veux pas balancer ^^, mais il me semble que Sephi-chan a fait de très belles réponses à ce sujet sur ce même forum !
Kéké qui n'arrive pas à lire ton code.
PS : je prends toujours 2 plombes à répondre aux messages, j'ai pas vu le message de Holy. Etant donné qu'il est mal vu de faire des doubles posts, j'édite celui là ...
Holy >
Citation :J'ai un bête système qui permet de bannir un joueur. Ça modifie mon champ SQL "ban" dans ma table player_tbl. Ça crée un fichier qui indique au joueur banni qu'il doit rafraichir sa session. En rafraichissant sa session, $_SESSION['ban'] passe de 0 à 1 par exemple.Et moi je suis persuadé que ton système n'est pas le plus efficace. Sans offense bien évidement car j'ai commencé comme toi et que sans m'en apercevoir un type avait réussi à "filouter" ma BDD ... Dans mon bonheur, ce "filou" a eu la maladresse de pas faire gaffe ... il s'était donné 5000 pièces d'or, mais avait perdu 800000 tours. Un hasard qui m'a permis de localiser l'individu, lui souffler dans les bronches comme il se doit et ça n'a pas débordé ... (ha oui, sur Magdales, 1 Pièce d'or représente une bonne semaine de combat pour un vétéran ...).
J'utilise ce système à grande échelle. Dés qu'une donnée d'un joueur est modifiée par un utilisateur autre que lui, le système provoque le rafraichissement de la session du joueur (avant toute action dans la page). Ce qui fait que les données de la session sont toujours fidèles à celles qui se trouvent dans la base de données. L'avantage étant que je ne dois pas faire de vérification sql.
Personnellement, je considère ces données comme fiables.
Alors pourquoi dis-je que ton système n'est pas le plus efficace ? Pourquoi a ton avis avons-nous inventé les bases de donnée ? Il serait prétentieux de donner une réponse exhaustive à ces deux questions, mais : la gestion de donnée de données concurrentielles et la facilitée de mise à jour seraient 2 pistes de réflexion.
En gros, ça prend pas tellement plus de temps de faire une requête SQL à ta base de donnée, que de tester la présence ou l'absence d'un fichier correctement formaté. Par contre, la gestion des droits de fichiers varient selon les OS ... Si tu veux débannir un joueur, auras-tu les droits de suppression du fichier dans ton nouvel hébergeur ?
Aujourd'hui, tu utilises ton système de fichier pour le bannissement. Demain, tu en auras besoins pour d'autres variables ... vas tu faire un système compliqué de fichier à chaque fois ?
La technique que tu emploies était très utilisée avant ... Ton fichier s'appelle un "Flag" si tu veux faire des recherche Google sur cette technique.
Sache qu'il existe une autre technique qui permet de modifier directement la Session d'un autre joueur ... Je ne l'utilise pas, mais ce n'est pas le cas de certains créateur de jeu sur ce forum... En mon sens cette autre technique doit être bien maitrisée sinon c'est le moyen le plus directe d'aller à la catastrophe ...
kéké (bis)