我如何制作一个提交给自己的PHP表单?
我如何制作一个自我张贴/自我提交表格,即将结果提交给自己的表格,而不是提交给另一个表格?
正确的方法是使用$_SERVER["PHP_SELF"]
(与htmlspecialchars
一起避免可能的漏洞)。 你也可以跳过action=
part empty,这不是W3C有效的,但是当前在大多数(所有)浏览器中都可以使用 – 默认情况下,如果它是空的,则自动提交。
以下是一个表单,其中包含姓名和电子邮件,然后显示您在提交时input的值:
<?php if (!empty($_POST)): ?> Welcome, <?php echo htmlspecialchars($_POST["name"]); ?>!<br> Your email is <?php echo htmlspecialchars($_POST["email"]); ?>.<br> <?php else: ?> <form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post"> Name: <input type="text" name="name"><br> Email: <input type="text" name="email"><br> <input type="submit"> </form> <?php endif; ?>
我猜你的意思是$_SERVER['PHP_SELF']
。 如果是这样的话,如果没有先消毒的话,你真的不应该使用它。 这会让你对XSS攻击开放。
if(isset($_POST['submit']))
条件应该高于HTML输出的所有条件,并且应该包含一个header()
函数,并且redirect到当前页面(现在只有一些很好的通知“emails has被发送“..或什么的)。 为此,您将不得不使用$_SESSION
或$_COOKIE
。
请。 停止使用$_REQUEST
。 这也构成安全威胁。
这只会在register_globals
打开的情况下起作用,并且它永远不会开启 (除非你在其他地方定义了这个variables)。
尝试将form
的action
属性设置为?
…
<form method="post" action="?"> ... </form>
您也可以将其设置为空白( ""
),但较旧的WebKit版本有一个错误 。
您的提交button没有名称。 添加名称=“提交”到您的提交button。
如果您在浏览器中查看表单中的源代码,您将看到它是如何提交给自己的 – 表单的action属性将包含当前脚本的名称 – 因此当表单提交时,它将提交给自己。 编辑为虚荣的缘故!
-
更改
<input type="submit" value="Submit" />
至
<input type="submit" value="Submit" name='submit'/>
-
更改
<form method="post" action="<?php echo $PHP_SELF;?>">
至
<form method="post" action="">
- 只有在提交时才会执行代码。
- 它将始终显示表单(html代码)。
- 你的问题到底是什么?
尝试这个
<form method="post" id="reg" name="reg" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
效果很好 :)