在表单的action属性中内联php脚本

时间:2014-02-18 10:09:39

标签: php html forms

为什么这不起作用?

<form action="<?php echo 'test'; ?>"><input type="submit"></form>

为什么要回显'test',我需要将PHP放到一个单独的文件中,并将action属性指向它?如果我有多个带有短PHP脚本的表单,我不能简单地以某种方式内联它们来执行任务,而不是制作许多外部文件吗?

我的目的是让一种控制面板对数据库进行不同类型的更改。

2 个答案:

答案 0 :(得分:1)

您不能在动作属性中放置代码,而不是HTML的工作方式。

<form action="index.php">
<input type="hidden" name="do" value="dotest">

您的应用程序中需要一个路由器来分派任务。在这种情况下,“do”查询参数将指示要执行的操作。代码可以是一个大的switch语句(不推荐),也可以将操作存储在单独的files / classes / class方法中。您可以直接查找代码(file_exists / method_exists / autoloading ...),也可以解析查找并进行某种预注册并将操作存储在字典中({{1 }})。

我建议检查一些PHP框架也得到一些想法。那里有一些非常聪明的路由器和控制器抽象。它会比你想象的更好,特别是如果你没有经验。

注意:许多小文件没有任何问题 - 只是尝试为您的Web应用程序使用单个入口点。

答案 1 :(得分:0)

因为浏览器没有也无法关心PHP。当浏览器收到此HTML时:

<form action="<?php echo 'test'; ?>"><input type="submit"></form>

该怎么办呢?只是“运行PHP”?您的意思是在服务器上设置和配置的PHP ?不,这根本不是它的运作方式。

HTML规范说action属性指向浏览器将表单数据发送到的 URL 。然后完全取决于该URL的服务器对它进行操作,这就是PHP运行的地方。

您也不需要单独的物理文件,您可以将所有表单提交到相同的PHP文件/ URL,然后根据该文件/ URL确定收到的内容并输出不同的内容。您也可能想要查看Javascript和AJAX请求。