IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Formulaire long à remplir et redirection vers le login


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut Formulaire long à remplir et redirection vers le login
    Bonjour à tous,

    J'ai une problèmatique avec Symfony2 et FOSUserBundle.

    J'ai une application web basé uniquement sur du login à la racine. Toute l'application nécessite une connexion.
    Sur une page spécifique, j'ai un immense formulaire qui peut mettre entre 10 et 30min pour le remplir selon les possibilités.
    Seulement, au bout de 30min, l'utilisateur est parfois déconnecté, pas toujours, c'est très aléatoire... Mais surtout très chiant pour lui !

    J'ai essayé de configurer mon FOS comme ceci :

    security.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        firewalls:
            main:
                pattern: ^/
                form_login:
                    #use_forward: true
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                    remember_me: true
                logout:       true
                anonymous:    true
                switch_user: true
                remember_me:
                    key:        %secret% # %secret% est un paramètre de parameters.yml
                    lifetime:   86400
                    path:        /
    config.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    framework:
        session:
            handler_id:  ~
            cookie_lifetime: 86400
    Mais apparemment ça ne fonctionne pas correctement... Aurais-je loupé une étape ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Salut !

    À mon avis, tu as essentiellement un problème d'ergonomie. Un formulaire trop long est rebutant pour l'utilisateur. Tu n'as pas besoin de modifier la durée de la session si tu sépares ton formulaire en plusieurs étapes. Dans l'idéal, un groupe de champs ne devrait pas dépasser la hauteur d'une page.

    Entre chaque étape, tu mets en mémoire de session les champs remplis jusque-là, et en bonus ça te permet de donner plus rapidement un retour à l'utilisateur sur la validité de ses données. C'est plus doux que lui balancer tout en bloc à la fin (À moins que tu valides déjà à la volée par Ajax, dans ce cas c'est très bien )

    Si tu es à l'aise en anglais, je t'invite à lire cet excellent slide sur la conception de formulaires ergonomiques : http://www.slideshare.net/jwegesin/forms-suck
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Merci pour cette réponse très intéressante.

    En fait, l'ergonomie est vraiment au point car le formulaire peut se remplir en deux secondes si on clique sur un bouton (pré-rempli selon une zone 1, 2, ou 3 l'ensemble des valeurs prédéfini). Mais l'utilisateur peut personnalisé tous les champs, un à un. C'est pour ces personnes que ça pose soucis. Je souhaite absolument laissé le formulaire tel quel puisqu'il réponds à 100% à la demande de mes 90% d'utilisateur. Seulement, dans les 10% restant, ça coince une fois sur 2 à cause de leur lenteur à le remplir (s'ils discutent entre temps...)

    Si je n'ai pas de solution précise, j'envisage de faire des requêtes ajax à chaque fois qu'un groupe d'input est finalisé pour enregistrer les variables dans uen table "brouillon" et pour retrouver ses valeurs "au cas où", mais c'est en dernier recours.
    A ce propos, si j'effectue une requête AJAX, la session de l'utilisateur est-elle réactualisé poru se garder lors de la finalisation du formulaire ? En gros si j'envoie les données toutes les 2min je n'aurais plus ce soucis par exemple...

    Donc pour finir l'ergonomie est correcte pour l'utilisateur, j'en reste persuadé (difficile de juger quand on ne voit pas le formulaire mais je ne peux malheureusement pas en dire plus c'est très privé)...

    J'aurais plus voulu savoir si ma configuration des sessions étaient correctes et dans ce cas si l'AJAX peut être une alternative à ce problème ?

    Merci en tout cas !

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Alors j'imagine qu'il faut que tu changes à la fois lifetime et cookie_lifetime pour pouvoir modifier la durée des sessions. En gros, une session c'est un bloc de données qui est gardé côté serveur un certain temps, et le client reçoit un cookie qui l'associe avec ce bloc de données. Si le bloc expire, le cookie ne sert plus à rien ; si le cookie expire, l'utilisateur n'est plus associé à sa session sur le serveur.

    Sinon une requête Ajax va effectivement remettre le compteur à zéro, car elle est traitée comme une requête HTTP classique. Même une simple requête GET sans paramètre fait l'affaire, car Ajax envoie automatiquement les cookies avec chaque requête. J'ai déjà fait ça et ça marchait très bien.
    Mais c'est une solution moins « solide », dans le sens où si tu as besoin de rallonger la durée de session sur une autre page, tu devras ajouter à nouveau du code sur cette autre page, alors qu'en modifiant les fichiers de config tu appliques le changement à tout le site.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. [JMeter] redirection vers le login
    Par el_harrathi dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 18/06/2010, 16h48
  2. Réponses: 1
    Dernier message: 09/11/2007, 12h31
  3. Redirection vers un même formulaire.
    Par lecail65 dans le forum Langage
    Réponses: 28
    Dernier message: 28/07/2006, 10h47
  4. Réponses: 4
    Dernier message: 26/07/2006, 13h37
  5. Réponses: 1
    Dernier message: 20/07/2006, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo