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)
ter*_*ško 11
我想,你的意思是$_SERVER['PHP_SELF'].如果是这样,你真的不应该在没有首先消毒的情况下使用它.这使您对XSS攻击持开放态度.
该if(isset($_POST['submit']))条件应高于所有的HTML输出,并且应包含一个header()又一个重定向至当前页面功能(仅现在,有了一些不错的通知,"邮件已发送" ..或东西).为此你必须使用$_SESSION或$_COOKIE.
请.停止使用$_REQUEST.它也构成了安全威胁.
只有register_globals在打开时才会起作用,并且它永远不会打开(除非你在其他地方定义该变量).
尝试将form's action属性设置为?...
<form method="post" action="?">
...
</form>
Run Code Online (Sandbox Code Playgroud)
您也可以将其设置为空白(""),但较旧的WebKit版本有一个错误.