Вызовите метод PHP с помощью Ajax.Request - PullRequest
0 голосов
/ 15 января 2010

Каков наилучший способ вызова определенного метода в файле PHP с помощью Ajax.Request (с использованием прототипа)? Я отправляю форму с помощью Form.serialize, поэтому я подумал о добавлении параметра (например, имени вызываемого метода), а затем проверил его в сценарии сервера. Что-то вроде:

var params=Form.serialize("someform")+"&=method='check_data'";
new Ajax.Request('somescript.php',{method:'post',parameters:params,onSuccess:
function(response)
{ 
    .. do something with the response

И в somescript.php:

if($_POST["method"] == "check_data")
{
    check_data();
...
}

Это бы сработало, но я уверен, что есть лучший или более простой способ вызова удаленного метода (а-ля MVC). Есть идеи?

1 Ответ

3 голосов
/ 15 января 2010

Ни при каких обстоятельствах не делайте этого для обычных методов PHP. Это открывает большую потенциальную дыру в безопасности. Даже если вы ограничите команды, которые могут быть названы таким образом, это не очень хороший способ в долгосрочной перспективе.

Либо оставайтесь с тем, что вы уже делаете: определите список команд, которые можно передать скрипту PHP (например, command=delete, command=update, command=copy, что вам нужно), и вызовите их, используя switch ,

Или используйте класс с методами, которые можно безопасно вызывать извне:

class myCommands
{
  function copy()  {  ... }
  function delete()  {  ... }
  function update()  {  ... }
 }

затем в файле PHP введите команду, подобную

if (method_exists($class, $_POST["method"]))  
 call_user_func(array($class, $_POST["method"]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...