@Kirill-Gorelov
С ума с IT

Вызвать функцию php через ajax?

Всем привет.
Я понимаю, что этот вопрос уже наверное надоел всем или кому-то покажется глупы НО. Как вызвать определенную функцию php через ajax?

Я придумал дурацкий метод, но он работает. Но мне хотелось бы правильно это сделать.
Суть такова.
Через ajax обращаюсь к файлу, где выписаны все функции. И непосредственно само обращение к определенной функции сделать через условие:

require_once 'func.php';  //пдключаю файл с функциями
 if (isset($_POST['intt'])) { // в пост передаю определенное название или ключ(как угодно) к которой я и обращаюсь к определенной функции 
 $intt = $_POST['intt'];
emailto ($intt); // само выполнение функции
}

 if (isset($_POST['val'])) { 
 $val = $_POST['val'];
example ($val); 
}

 if (isset($_POST['val2'])) { 
 $val2 = $_POST['val2'];
example2 ($va2l); 
}


Подскажите, кто знает как сделать мою задачу правильно. Я гуглил, но ничего не нашел, за что можно было бы уцепиться, что придумать или решил. При поиске, на каком-то форуме меня натолкнули на такую фот идею!
  • Вопрос задан
  • 2360 просмотров
Решения вопроса 2
ewgenio
@ewgenio
Всё по чуть чуть
Здесь нет какого-то "правильного" стандартного подхода, вы можете передавать один параметр постом например $_POST['action']
и в зависимости от его значения(например используя switch($_POST['action'])) выполнять в PHP скрипте нужное действие.
Можно так как вы и сделали, с опытом и для конкретных задач вы будете сами находить нужное решение.
Будете например использовать MVC фреймворки - тогда будете осуществлять это с помощью роутингов.
Так что метод совсем не дурацкий как вы написали, просто метод для небольшого приложения.
Ответ написан
Комментировать
@Mysterion
Можно сделать проще. Через ajax отправлять название функции скрипту и аргументы, например.
$.ajax({
    type: "POST",
    url: 'script.php',
    cache: false,
    data: {
        'args': [
            arg_1: 'one',
            arg_2: 'two'
        ],
        'func': "example"
    },
    dataType: 'json'
});

А в скрипте делать так:
if(function_exists($_POST['func'])) {
    // функция существует, надо ее вызвать
    $_POST['func'](); // вызвали функцию
    $_POST['func']($_POST['args']['arg_1']); // передали аргумент 
    $func = $_POST['func'];
    $func(); // так тоже можно вызвать
}

Разумеется не стоит доступ к этому скрипту давать всем. Можно ведь и свой код таким образом выполнить на сервере.
А если всем надо, то делайте список доступных функций:
$allow_functions = ['count', 'rand'];
if(in_array($_POST['func'],$allow_functions) && function_exists($_POST['func'])) {
    // выполняем код
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы