php表单动作php自我

时间:2011-07-28 16:58:06

标签: php forms action

我有一个像这样的PHP表单。

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">

</form

在表单操作中,我想使用带有参数的页面名称。比如house.php?p_id=10111。但$ _SERVER ['PHP_SELF']仅提供house.php(我的页面完整网址为house.php?p_id=10111,如下所示)请帮我解决此问题。感谢。

8 个答案:

答案 0 :(得分:77)

如何将它留空,这有什么问题?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="">

</form>

此外,您可以省略action属性,它将按预期工作。

答案 1 :(得分:15)

您可以将操作留空或使用此代码:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>">
</form>

答案 2 :(得分:8)

将操作值保留为空白将导致表单回发给自己。

答案 3 :(得分:4)

您也可以使用回音快捷方式,而不是输入“echo blah;”如下图所示:

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>">

答案 4 :(得分:2)

这是完美的。试试这个:)

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
/* Html Input Fields */
</form>  

答案 5 :(得分:2)

如果您不想依赖__FILE__变量,则另一种(在我认为合适的)方法中使用$_SERVER常量。

$parts = explode(DIRECTORY_SEPARATOR, __FILE__);
$fileName = end($parts);
echo $fileName;

关于魔术和预定义常量:12

答案 6 :(得分:1)

最简单的方法是将 action 留空 action="" 或从表单标签中完全省略它,但这是不好的做法(如果您真的关心它)。

如果你真的关心它,你能做的最好的事情就是:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF'] . http_build_query($_GET));?>">

使用它最好的一点是,即使是数组也会被转换,因此无需对任何类型的数据做任何其他事情。

答案 7 :(得分:0)

如果您想确保安全,请使用以下命令:<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">