2010-06-08 4 views
0

Est-il possible d'appeler une fonction de classe php DIRECTEMENT en utilisant ajax?comment appeler une fonction de classe PHP directement en utilisant ajax?

Quelque chose comme ci-dessous ... sauf ajax ...

myclass::myfunction(); 

J'utilise la bibliothèque jquery pour travailler avec AJAX.

$.get('control.php', {func: funcName, arg1: arg1}); 

Ce qui précède est similaire à ce que j'essaie de réaliser MINUS the control.php; Je ne suis pas sûr si c'est même possible, mais j'ai juste pensé que ce serait bien d'ignorer la page d'atterrissage (control.php) qui reçoit le funcName. J'ai un tas d'instructions conditionnelles qui déterminent quelle fonction de classe exécuter en fonction du funcName reçu.

Il semble assez stupide de faire cela, d'avoir une page séparée juste pour gérer les appels de fonction.

Y a-t-il un meilleur moyen?

Répondre

5

No.

Si cela était possible, ce serait un trou de sécurité béant.

+0

Hmm, je ne comprends pas. Pouvez-vous expliquer pourquoi...? Donnez un exemple. Merci – payling

+0

@payling: Voulez-vous vraiment une page javascript capable d'appeler 'exec()' directement? C'est un exemple, mais il y a beaucoup de fonctions dangereuses (et certaines de vos fonctions ne sont probablement pas sûres d'être appelées comme ça non plus). –

+0

@payling S'il existait un moyen d'invoquer la méthode _any_ directement de cette façon, on pourrait simplement (manuellement) construire un appel qui ne fera que cela. De cette façon, n'importe qui (avec ou sans permission) pourrait exécuter la logique à l'intérieur de cette méthode (ce qui n'est probablement pas une très bonne idée.) – kamasheto

0

Non. Vous ne pouvez pas appeler une méthode directement de cette façon.

Vous pouvez utiliser le routage (comme la technique utilisée dans CodeIgniter et CakePHP) mais ce n'est que du sucre syntaxique qui fait la même chose - contrôlez vos routes vers les actions.

0

Ce n'est pas possible pour une raison simple. Comment l'AJAX devrait-il savoir où trouver la fonction? Il doit avoir une URL pour localiser la fonction afin qu'elle ne fonctionne pas sans un fichier php entre.

0

Non pour des raisons de sécurité, mais il n'y a aucune raison pour laquelle vous ne pouvez pas faire quelque chose comme ça

function run($args){ 
    //do stuff 
} 

echo run($_REQUEST); 
//or 
echo run($REQUEST['name']); 
Questions connexes