я могу использовать метод php в действии формы? - PullRequest
2 голосов
/ 28 сентября 2010

Можно ли отправить данные формы в метод класса PHP, а не в файл?Или я должен был бы использовать AJAX, чтобы сделать это?

Например, могу ли я иметь что-то вроде:

<form action="my_obj::form_submit" method="post">...</form>
//rather than
<form action="my_obj.php" method="post">...</form>

Я не хочу, чтобы кто-либо имел доступ ко всему файлу напрямую,Однако я не вижу проблемы в наличии единственного общедоступного статического метода, потому что один метод легко «закалить» для публичного использования.Есть функция AJAX, чтобы помочь мне сделать это, но я думаю, что было бы быстрее этого не делать.

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 сентября 2010

Нет, это невозможно, так как код на стороне клиента не может никогда знать о таких деталях реализации на стороне сервера. Как комментирует Чак Возе, если это вообще возможно, это серьезная ответственность за безопасность.

action атрибуты <form> элементов, таких как <a href>, являются просто URI, поэтому вы не можете указать на какую-то конкретную часть кода PHP и ожидать, что PHP соберет все и выполнит его. Опять же, это та же проблема на стороне клиента / сервера.

Если вы не используете какую-либо маршрутизацию URL, как это предусмотрено многими фреймворками (согласно ответу webbiedave), вы не сможете пойти дальше, чем URI, указывающий на скрипт PHP на вашем сайте.

0 голосов
/ 28 сентября 2010

Вы не можете сделать action="my_obj::form_submit", поскольку это даже не допустимый URI.Тем не менее, вы можете сделать action="/my_obj/form_submit" и сопоставить URI с /<object>/<method>. Этот подход используют многие платформы MVC.

0 голосов
/ 28 сентября 2010

Я бы попытался обработать это с помощью специального запроса URI. Таким образом, вы можете проверить, задан ли ключ в переменной $_GET, и загрузить класс определенным методом.

В противном случае знание заданного ключа в переменной $_POST позволяет перенаправить ваш процесс в метод, который вы хотите вызвать. Таким образом, нет особой необходимости в таком виде отправки вызова.

...