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

NodeJS Discussion :

Lancer des actions dans un contrôleur depuis une url de la forme www.monsite.com/index.html?ctrl=user&action


Sujet :

NodeJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lancer des actions dans un contrôleur depuis une url de la forme www.monsite.com/index.html?ctrl=user&action
    Bonjour,

    Je souhaite pouvoir lancer des actions dans un contrôleur depuis une url de la forme www.monsite.com/index.html?ctrl=user&action=add.

    En PHP Je récupérerais les variables ctrl (user) et action (add) pour lancer la fonction « add » du fichier controller « userController ».

    Le code en PHP aurait cette forme :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ctrl = $_GET['ctrl'];
    $action = $_GET['action'];
     
    require_once('./controller/' . $ctrl . 'Controller.php');
     
    $ctrl = $ctrl . 'Controller';
    $controller = new $ctrl($db);
    $controller->$action();

    J’ai trouvé un moyen de faire la même chose sous Node :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    app.get('/index.html', function(req, res) {
        if (req.query.ctrl && req.query.action){
            let ctrl = req.query.ctrl+"Controller";
            let action = req.query.action;
            eval(ctrl+"."+action+"(res)");
        } else {}
    });
    Mais ce n'est pas satisfaisant car j'utilise eval()...

    J'ai beau chercher je ne trouve pas de solutions. Est-ce tout simplement parce que Node ne s'y prête pas ?

    Merci d'avance pour vos lumières

  2. #2
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Points : 808
    Points
    808
    Par défaut
    1) Que ce soit en PHP ou en JS, ce que tu illustres est dangereux, il pourrait permettre à l'utilisateur d'appeler des choses que tu ne veux pas.
    2) Généralement, on fait une (ou plusieurs, selon les méthodes HTTP appelables) route(s) par paire de contrôleur/action et, dans le callback, ceux-ci sont définis en dur
    3) Si tu veux vraiment faire une seule route dynamique, il faut passer par les const {action, ctrl} = req.params, avec comme route '/:ctrl/:action'

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Ok c'est noté, Merci pour ta réponse.

    Je comprends que ça pose problème avec eval() en js, mais ca me paraissait clean en PHP. J'avais l'impression que des gros sites fonctionnaient comme ça. Cette façon de faire sort d'un cours à la fac, et j'avais trouvé ça plutôt sympa pour organiser ses url (je parle du PHP là).

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/12/2014, 09h42
  2. Réponses: 3
    Dernier message: 15/04/2012, 10h17
  3. Sauvegarder des données dans un fichier depuis une Base de Données
    Par ankou2005 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 18h51
  4. POSTer des données dans l'admin depuis une vue
    Par dchango dans le forum Django
    Réponses: 5
    Dernier message: 17/01/2011, 15h30
  5. Réponses: 1
    Dernier message: 05/10/2009, 03h50

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