是否可以将表单数据发送到PHP类的方法而不是文件?或者我是否必须使用AJAX来执行此操作?
例如,我可以拥有类似的内容:
<form action="my_obj::form_submit" method="post">...</form>
//rather than
<form action="my_obj.php" method="post">...</form>
我不希望任何人能够直接访问整个文件。但是,我没有看到有一个公共静态方法可用的问题,因为单个方法很容易“强化”以供公众使用。有一个AJAX功能可以帮助我做到这一点,但我认为不这样做会更快。
由于
答案 0 :(得分:2)
不,这是不可能的,因为客户端代码可以从不了解这种服务器端实现细节。正如Chuck Vose评论的那样,如果可能的话,这是一项重大的安全责任。
action
元素上的 <form>
属性(如<a href>
)只是URI,因此您无法指向PHP代码的某些特定部分,并期望PHP汇集所有内容并运行它。同样,它是同一个客户端/服务器端问题。
除非您像许多框架一样使用某种URL路由(根据webbiedave的回答),否则您将无法继续使用指向站点中PHP脚本的URI。
答案 1 :(得分:0)
我会尝试通过特定的uri查询来处理它。因此,您可以检查是否给出了$_GET
变量中的键,并使用特定方法加载该类。
如果知道$_POST
变量中的给定键,您可以将进程转发到要调用的方法。因此,没有特别需要这种表单提交电话。
答案 2 :(得分:0)
你不能action="my_obj::form_submit"
,因为它甚至不是有效的URI。但是,您可以执行action="/my_obj/form_submit"
并将URI映射到/<object>/<method>
这是许多MVC框架使用的方法。