我如何制作一个提交给自己的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)。

尝试将formaction属性设置为?

 <form method="post" action="?"> ... </form> 

您也可以将其设置为空白( "" ),但较旧的WebKit版本有一个错误 。

您的提交button没有名称。 添加名称=“提交”到您的提交button。

如果您在浏览器中查看表单中的源代码,您将看到它是如何提交给自己的 – 表单的action属性将包含当前脚本的名称 – 因此当表单提交时,它将提交给自己。 编辑为虚荣的缘故!

  1. 更改
    <input type="submit" value="Submit" />

    <input type="submit" value="Submit" name='submit'/>

  2. 更改
    <form method="post" action="<?php echo $PHP_SELF;?>">

    <form method="post" action="">

  3. 只有在提交时才会执行代码。
  4. 它将始终显示表单(html代码)。
  5. 你的问题到底是什么?

尝试这个

<form method="post" id="reg" name="reg" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"

效果很好 :)