表格未正确提交

Posted

技术标签:

【中文标题】表格未正确提交【英文标题】:Form Not Submitting Correctly 【发布时间】:2018-01-02 06:02:24 【问题描述】:

所以我试图让一个选择元素在每次更改选择时更新一条 mysql 记录。但我成功触发 php 代码的唯一方法是通过输入按钮,而不是下面显示的内容。我需要能够通过不可见的输入提交来触发 PHP 代码。

重点是通过选择元素而不是按钮来更新PHP记录。

<form id="signin-form_id" class="panel" method="POST" style="margin-bottom: 0px;">
    <div class="input-group">
        <span class="input-group-addon">
            Coin
        </span>
        <select class="form-control" name="cointype" onchange="this.form.submit()">
            <option value="0" selected>Bitcoin</option>
            <option value="1">Litecoin</option>       
        </select>
    </div>
    <noscript><input type="submit" name="ReferralCoin"></noscript>
</form>

假设提交按钮会触发 PHP 中的 POST 事件,请参见此处: 不要评论 MYSQL 注入漏洞。

<?php
if (isset($_POST['ReferralCoin']))

    $cointype = $_POST['cointype'];
    if($cointype == "0") 
    
        $odb->exec("UPDATE users SET `coin` = '$cointype' WHERE `ID` = '$userid'");
     
    elseif($cointype == "1")
    
        $odb->exec("UPDATE users SET `coin` = '$cointype' WHERE `ID` = '$userid'");
    

?>

问题是,如果我要使用输入按钮,它可以正常工作并触发 php POST 代码,但是当使用不可见输入提交时,它不会触发 PHP POST 代码。如果有人能帮我找出我的错误,不胜感激!

【问题讨论】:

向我们展示你的 js 代码 @user3284463 我没有与此相关的任何 JS 代码,仅此而已。我错过了 javascript 的东西吗? 如果您没有使用提交按钮来触发表单发布,那么您使用的是什么?您是否有响应 select 元素的更改事件以提交表单的 JavaScript 代码?基本上,如果你想提交表单,something 必须提交它。 @David 他正在使用 `onchange="this.form.submit()" ` 然后改成if (isset($_POST['cointype'])) 【参考方案1】:

您正在这里检查提交按钮:

if (isset($_POST['ReferralCoin']))

但是如果提交按钮没有被点击(因为您是通过 JavaScript 代码提交表单),那么它就不会包含在 POST 值中。所以$_POST['ReferralCoin'] 没有设置。

您需要完全删除检查,或检查其他条件。 (比如是否设置了$_POST['cointype']。)

【讨论】:

成功了!谢谢你。一如既往的简单错误:/

以上是关于表格未正确提交的主要内容,如果未能解决你的问题,请参考以下文章

我的表单在 Laravel 中未正确提交

Servicenow:表格中的自定义附件小部件未在提交时上传文档

提交表单数据后,页面未在 laravel 中正确加载

提交表单后模态弹出窗口未正确关闭

验证输入字段后如何提交表单

React Redux表单提交未给出正确的结果