2 votes

"Se souvenir" des trois dernières requêtes MySql ; Cookie, variable passée ou autre méthode ?

J'ai un site web de petites annonces, avec une recherche assez sophistiquée, et je suis sur le point d'implémenter une fonction où les trois dernières requêtes sont affichées pour l'utilisateur, de sorte que l'utilisateur peut revenir en arrière plus facilement à travers les requêtes. En effet, pour chaque requête, l'utilisateur doit fournir beaucoup d'informations.

J'ai quatre questions à vous poser :

  1. Je me demande comment je peux sauvegarder la requête réelle (SELECT * FROM etc etc)... ?
  2. Dois-je ajouter une forme de cryptage pour être plus sûr ?
  3. Comment cela affectera-t-il les performances ? (Je n'aime pas le fait que les cookies ralentissent les sites Web).
  4. Quelque chose d'autre à penser ?

Si vous avez besoin de plus d'informations, faites-le moi savoir...

Le site web est basé sur PHP.

Merci

1voto

troelskn Points 51966

Le navigateur dispose déjà d'une fonction appelée "historique". Lorsque l'utilisateur clique sur le bouton "retour", le navigateur charge la page précédente. Vous devriez vous appuyer sur cette fonctionnalité, plutôt que d'essayer de réinventer la roue.

0voto

soulmerge Points 37314

Vous voulez essentiellement une fonction d'annulation à 3 niveaux. Je recommanderais de stocker chaque requête que vous exécutez dans un tableau et de réduire ensuite la taille de ce tableau à trois. Implémentation très basique (pour mieux expliquer l'idée, ceci n'est en aucun cas débogué ou complet) :

function query(&$queue, $mysqli, $sql) {
    if (isset($queue[2])) {
        $queue[0] = $queue[1];
        $queue[1] = $queue[2];
        unset($queue[2]);
    }
    $queue[] = $sql;
    return $mysqli->query($sql);
}

Vous pouvez utiliser la file d'attente pour afficher les requêtes à l'utilisateur ou revenir en arrière (n'oubliez pas de mettre à jour la file d'attente si vous le faites) ou tout ce dont vous avez besoin.

Je n'enverrais pas les requêtes via les cookies, mais plutôt les stocker dans la session et les afficher à l'utilisateur s'il en a besoin - sinon il vous enverra des instructions sql arbitraires - comme INSERT INTO user (username, password, isadmin) VALUES (... - avec ses $_COOKIEs (les utilisateurs peuvent falsifier les cookies - très facilement).

Au fait : jamais Pensez aux performances en PHP jusqu'à ce que vous ayez terminé - il est tellement plus facile d'optimiser un code propre que de corriger un code optimisé. Implémentez d'abord, mesurez ensuite. Si cela s'avère être un goulot d'étranglement, commencez à penser à des optimisations.

0voto

Adam Hopkinson Points 16747

Je ne sauvegarderais pas les requêtes réelles - que se passerait-il si l'utilisateur parvenait à en modifier une ?

Soit vous enregistrez l'url de la page des trois résultats précédents (en supposant que vous validez vos variables d'entrée, cela devrait être plus sûr), soit vous enregistrez la requête dans la base de données avec une clé unique, puis vous utilisez la clé comme référence plutôt que la requête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X