php表单动作php self

php表单动作php self,php,forms,action,Php,Forms,Action,我有一个像这样的php表单 <form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> </form 让它空着怎么样,有什么问题吗 <form name="form1" id="mainForm" method="post" enctype="multipart/form-da

我有一个像这样的php表单

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

</form

让它空着怎么样,有什么问题吗

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

</form>


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

将action值保留为空将导致表单发回自身。

您可以将action保留为空或使用以下代码:

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

这太完美了。试试这个:)


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

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>">
另一种(我认为正确的)方法是,如果您不喜欢依赖
$\u服务器
变量,请使用
\u文件
常量

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

关于魔法和预定义常量:,。

如果您希望安全,请使用此:
最简单的方法是将action留空
action=”“
或将其从表单标记中完全忽略,但这是一种不好的做法(如果您关心它的话)

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


这不是完整的url。这是url+GET参数。@Alex Ackerman:这是一个相当好的参数。是的。亚历克斯是对的。我现在使用的是
$\u服务器['PHP\u SELF']。“?P\u id=“..$id
混合post和get参数是一种糟糕的做法。如果您正在发布,那么就使用隐藏的表单字段来传递任何“get”类型的值。我不同意@MarcB将查询字符串参数放入操作中是不好的做法。有许多网站使用查询字符串来确定要加载的内容(页面或状态),并使用POST的内容来承载数据。谢谢。我认为这是最简单也是最好的方法。将其留空会破坏w3c验证(以防您介意)@jBaron是的,HTML5就是这样,但您可以完全忽略空的
action=“
属性。它将按预期进行验证和工作。@Shef对同一页使用post方法是不好的做法。刷新页面时浏览器将始终发出警报。@Avnishalok提交后,每当有人刷新页面时,浏览器将始终发出警报。提交的内容是在不同的页面上还是在同一页面上并不重要。这允许XSS攻击,您需要过滤/sanatize PHP_SELF这允许XSS攻击,您需要过滤/sanatize PHP_SELF
$parts = explode(DIRECTORY_SEPARATOR, __FILE__);
$fileName = end($parts);
echo $fileName;