8768 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Y aurait il un moyen d'empêcher le rafraichissement d'une page? Je m'explique : en cliquant sur l'onglet "qcm" l'utilisateur atterrit sur une page qui génère un qcm (10 questions piochées de manière aléatoire dans la table des questions) ... seulement voilà, si ce dernier rafraichit la page il générera à loisir un qcm et se donnant ainsi la possibilité de ne répondre qu'à celui qui lui convient . Comment faire ? J'ai pensé à mettre un "marqueur" dans la table user quand celui sélectionne l'onglet qcm (ce marqueur doit être égal à 0 si c'est le premier clic sur l'onglet) sinon faire apparaitre un pop up du type "vous devez maintenant répondre à ce qcm".
D'autres possibilités ? Smiley vieux
Alors au lieu de "contraindre" l'utilisateur et le bloqué dans une fonctionnalité existante (ce qu'il faut absolument ne pas faire hein Smiley smile )
il faudrait peut être pensé à contourner le problème.

Par exemple, tu as besoin de "garder" la 1er liste de question random.
Donc au chargement de la page tu peux tout a fait "stocker" ces question quelque part ?
Si c'est du php alors -> SESSION PHP
Si c'est only JS -> tu as les localstorage/sessionStorage OU tu as les objets Smiley smile .

Et pour l'algo en gros
Si mon document est ready (en jquery document.ready())
Si j'ai un tableau (quelque part en localstorage par exemple) qui à pour clé "Ma 1er liste"
Si il est plein
Alors j'efface les nouvelles question random et je remplace pour ce que j'ai dans mon localstorage).


En 5 lignes c'est plié.


Sinon, tu prend le plan B, tu bloque le rafraîchissement
Mais du coup il faut bloquer tout les raccourcis clavier suivant tout les navigateurs comme ctrl + maj + F5 ou simplement F5 ou les autres...

$(function () {  
        $(document).keydown(function (e) {  
            return (e.which || e.keyCode) != 116;  
        });  
    });  


la c'est pour bloquer QUE le F5.

Mais tu pourras jamais bloquer le "bouton" rafraichir à coté de l'url et le mec s'il ferme l'onglet et qu'il revient, je sais pas comment tu peux le gérer.

Le mieux, ça reste le PHP avec une table Historique qui associe la mec avec les questions.
Meilleure solution
JENCAL a écrit :
Alors au lieu de "contraindre" l'utilisateur et le bloqué dans une fonctionnalité existante (ce qu'il faut absolument ne pas faire hein Smiley smile )
il faudrait peut être pensé à contourner le problème.

Par exemple, tu as besoin de "garder" la 1er liste de question random.
Donc au chargement de la page tu peux tout a fait "stocker" ces question quelque part ?
Si c'est du php alors -> SESSION PHP
Si c'est only JS -> tu as les localstorage/sessionStorage OU tu as les objets Smiley smile .

Et pour l'algo en gros
Si mon document est ready (en jquery document.ready())
Si j'ai un tableau (quelque part en localstorage par exemple) qui à pour clé "Ma 1er liste"
Si il est plein
Alors j'efface les nouvelles question random et je remplace pour ce que j'ai dans mon localstorage).


En 5 lignes c'est plié.


Sinon, tu prend le plan B, tu bloque le rafraîchissement
Mais du coup il faut bloquer tout les raccourcis clavier suivant tout les navigateurs comme ctrl + maj + F5 ou simplement F5 ou les autres...

$(function () {  
        $(document).keydown(function (e) {  
            return (e.which || e.keyCode) != 116;  
        });  
    });  


la c'est pour bloquer QUE le F5.

Mais tu pourras jamais bloquer le "bouton" rafraichir à coté de l'url et le mec s'il ferme l'onglet et qu'il revient, je sais pas comment tu peux le gérer.

Le mieux, ça reste le PHP avec une table Historique qui associe la mec avec les questions.


Merci JENCAL, je vais me pencher sur cette histoire de session (en plus il me semble que j'ai déjà fais ça sur mon projet précédent Smiley hum )
Modifié par moko (16 Jun 2019 - 22:41)