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

jQuery Discussion :

Appeler une fonction d'un fichier PHP via $.ajax() [AJAX]


Sujet :

jQuery

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut Appeler une fonction d'un fichier PHP via $.ajax()
    Bonjour à tous !!!

    Comme tout novice, ma question n'a peut être aucun sens mais qui ne tente rien....

    Pour identifier un utilisateur, je fais un accès à une base de données MySQL, via $.ajax()

    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
    function jsUserConnect(){	....
    	$.ajax({
    		type: "POST",
    		url: "sqlConnect.php", // ====================>>>> Est-il possible d'appeler une fonction d'un fichier PHP et pas seulement un fichier ????:mouarf
    		data: serialData,
    		dataType: "json",
    		success: function(dataSQL, statut){
    			window.location.replace('form1.html');
    		},
    		error: function(dataSQL, statut){
    			alert ("error sqlConnect.js : " + dataSQL.erreur);
    		}
    	});
    	....
    }
    Ma question est peut-être d'ordre générale et s'étend à la méthode de programmation mais peut on appeler une fonction PHP dans un fichier PHP via $.ajax, ???

    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, ce n'est bien sûr pas possible : pour pouvoir appeler une fonction spécifique, il faut d'abord que le fichier soit évalué par l'interpréteur PHP, ce qui oblige à ne pouvoir appeler que le script complet.
    En revanche, rien ne t'empêche dans ton script PHP de différencier les traitements en fonction de si la requête provient d'un appel AJAX ou non, mais cela n'est pas la méthode la plus propre...

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Bonjour Bovino,

    Merci beaucoup pour m'avoir répondu aussi diligemment.

    Si je résume, un appel $.ajax = un fichier PHP.

    Encore merci Bovino car ça me permet de passer rapidement aux multiples autres problèmes à venir

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Comme l'a dit Bovino, il n'est pas possible d'appeler une fonction directement mais voici un exemple très simple de code pour "émuler" ce que tu souhaites :

    Fonction ajax :
    Code php' : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $.ajax({
        url: 'ajax.php', //toujours la même page qui est appelée
        type: 'POST',
        data: {fonction: 'maFonction', var1: 'val', var2: 3}, // paramètre fonction qui détermine la fonction qui sera exécutée
        success: function(data) {
            //Faire un truc
        }
    });

    Code de ajax.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fonction = $_POST['fonction'];
    unset($_POST['fonction']);
    $fonction($_POST);

    Et après tu as ta fonction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function maFonction($args) {
        echo $args['var1'];
    }

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Bonjour Spartacusply

    Merci beaucoup pour cette astuce et le code pour exemple.

    Avant de l'employer, développer de cette façon a-t-elle des désavantages voire ne doit pas être utilisée au regard des bonnes pratiques.

    J'espère que non car ta solution me tente comme un frelon face à un pic nique

  6. #6
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Non, je n'y vois aucun inconvénient majeur, c'est une manière comme une autre d'organiser le fonctionnement de tes requêtes jax. Après du moment que c'est clairement organisé, que tu t'y retrouves, et que c'est pas trop le bordel, c'est le principal. Fait gaffe à la sécurité juste, mais comme toujours avec l'ajax de toutes manières.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Spartacusply,

    Encore merci pour ton aide précieuse

    Dans ton code tu ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    $fonction($_POST);...
    Par curiosité, comment PHP fait-il pour interpréter cette commande comme un appel de fonction alors que $fonction est une variable? C'est le fait de suffixer $fonction par des parenthèses?

    Enfin une dernière question. Comme tu as évoqué des problèmes de sécurité inhérents à Ajax, pourrais-tu m'en dire d'avantage ou me donner des liens que tu trouves pertinents sur la question?

    Une nouvelle fois merci Spartacusply

  8. #8
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Par curiosité, comment PHP fait-il pour interpréter cette commande comme un appel de fonction alors que $fonction est une variable? C'est le fait de suffixer $fonction par des parenthèses?
    C'est ça, c'est le concept de fonctions variables.

    Comme tu as évoqué des problèmes de sécurité inhérents à Ajax, pourrais-tu m'en dire d'avantage ou me donner des liens que tu trouves pertinents sur la question?
    Le danger inhérent à l'ajax, c'est qu'il permet d'accéder à ton serveur et donc (si aucune sécurité n'est mise en place), lui faire exécuter n'importe quelle fonction, ou même n'importe quel code php, ce qui est évidemment n'est en aucun cas souhaitable. La mesure de base est de ne rien autoriser si c'est une requête ajax et de ne permettre les fonctions autorisées qu'au cas par cas (si ajax, alors accès refusé sauf si code à exécuter est autorisé).

    Une simple requête google te donnera plein de bons conseils sur la sécurité à mettre en place quand on utilse l'ajax

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Dans le cadre d'une application Web qui attaque une base de données, préconises-tu l'abandon d'AJAX car à la lecture de cet article par exemple http://www.cert-ist.com/public/fr/SO_detail?code=securite_ajax Ajax apparait vraiment très peu sécurisé?

    Encore merci Spartacusply pour tous ces conseils

  10. #10
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Non absolument pas, au contraire même (la majorité des scripts ajax font appels à une bdd). Ce n'est pas parce qu'un concept, par son principe, est peu sécurisé si on ne prend aucune précaution qu'il n'est pas possible de le rendre à un niveau de sécurité acceptable.

    Pour se faire ce n'est pas compliqué, la base repose sur le niveau de compréhension de "comment ça marche l'ajax ?". Une fois qu'on a bien compris comment cela fonctionnait, on comprend facilement dans quels pièges on pourrait tomber et les éviter ne devient ainsi plus si compliqué.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel à une fonction dans un fichier externe
    Par corentin59 dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2008, 12h22
  2. Réponses: 4
    Dernier message: 24/08/2007, 15h56
  3. Appeler une fonction dans un code PHP
    Par Nasky dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/08/2007, 16h19
  4. Appeler une fonction d'un fichier SWF depuis un Form VB6
    Par Silk_do_Nadear dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/04/2007, 07h25
  5. Appeler une fonction d'un script PHP depuis HTML
    Par barthelv dans le forum Langage
    Réponses: 31
    Dernier message: 27/12/2005, 11h25

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