【问题标题】:Submit button is not listening to isset handler提交按钮没有监听 isset 处理程序
【发布时间】:2013-01-17 21:47:54
【问题描述】:

我没有太多 PHP 对我不利的实例。但这肯定是其中之一,我已经检查了一整天,并认为它可能来自第 3 方。但是告诉我这个错误是随机的一个症状是我什至不能尝试设置一个字符串变量来从提交中回发。 issetempty 都不能捕获事件。当我按下提交时,我唯一看到的是我的 txtbox 变量被射入 URL。但没有验证发生。

所以现在我有一个登录页面的提交按钮,如下所示:

<form action='Login.php' method='post'>
    <table align="center">
        <tr><td>Username</td></tr><tr>
        <td><input type="text" name="txtUsername"/></td></tr>
        <tr><td>Password</td></tr><tr>
        <td><input type="text" name="txtPass"/></td></tr>
        <td colspan="2"><input type="submit" name="btnLogin" ID="btnBlueTemp" value="Sign in!" /></td></tr>
        <tr><td class="errorLogin"><?php echo $Error;?></td></tr>
    </table>
</form>

我已经调用了必要的 POST,这是事件。

$txtUsername = $_POST["txtUsername"];
$txtPass = $_POST["txtPass"];
$btnLogin = $_POST["btnLogin"];
if(isset($btnLogin)){
$Error = "ok";
}

导致我的按钮处理程序无法被捕获的问题可能是什么?我正在使用 Internet Explorer 9。

【问题讨论】:

    标签: php forms events button handler


    【解决方案1】:

    不要使用提交按钮来检查表单是否已提交。要么添加一个隐藏的表单字段并检查它是否设置,要么使用其他机制。在firefox中你不会有这个问题,但是在IE中你会。

    【讨论】:

    • 这是一个已知问题?你给我举个例子说明如何做隐藏字段?
    • 好吧,当我第一次遇到这个问题时,我被告知根据 rfc 你不应该依赖提交按钮来检查表单是否已提交,我没有进一步调查 irt 只是解决了这个问题.在表单中添加一个隐藏字段,如下所示:
    【解决方案2】:

    你做错了。当您使用 $btnLogin = $_POST["btnLogin"]; 时,您实际上是在设置变量。因此,即使您从地址栏中点击 url 而没有点击提交按钮,您的脚本也会被执行。

    改为使用 -

    if(isset($_POST['btnLogin']){
          // do stuff
    }else{
          // do other stuff
    } 
    

    【讨论】:

    • 我之前使用的是 extract($_POST),如果我使用的是 $btnLogin = $_POST["btnLogin"]; 我正在设置变量。然后,当单击提交按钮时,第二次将我的$btnLogin 设置为 true 的页面回发。这不是发生了什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多