如何制作提交给自己的PHP表单?

use*_*079 47 html php forms

如何制作自我发布/自我提交表单,即将结果提交给自己的表单,而不是提交给其他表单?

Php*_*elp 78

正确的方法是使用$_SERVER["PHP_SELF"](与htmlspecialchars避免可能的漏洞利用相结合).您也可以跳过action=空白部分,这不是W3C有效,但目前适用于大多数(所有?)浏览器 - 默认情况下,如果它为空,则提交给自己.

下面是一个带有名称和电子邮件的示例表单,然后显示您在提交时输入的值:

<?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; ?>
Run Code Online (Sandbox Code Playgroud)

  • 将操作值保持为空不是W3C有效.只是要注意.但它运作良好. (6认同)

ter*_*ško 11

我想,你的意思是$_SERVER['PHP_SELF'].如果是这样,你真的不应该在没有首先消毒的情况下使用它.这使您对XSS攻击持开放态度.

if(isset($_POST['submit']))条件应高于所有的HTML输出,并且应包含一个header()又一个重定向至当前页面功能(仅现在,有了一些不错的通知,"邮件已发送" ..或东西).为此你必须使用$_SESSION$_COOKIE.

请.停止使用$_REQUEST.它也构成了安全威胁.


ale*_*lex 5

只有register_globals在打开时才会起作用,并且它永远不会打开(除非你在其他地方定义该变量).

尝试将form's action属性设置为?...

<form method="post" action="?">
   ...
</form>
Run Code Online (Sandbox Code Playgroud)

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

  • @Damian我不喜欢滥用片段标识符。 (2认同)