【问题标题】:Getting the wrong value with type="hidden"使用 type="hidden" 获取错误的值
【发布时间】:2014-06-03 21:21:35
【问题描述】:

在我的应用程序中,我正在尝试发送加入群组的邀请。因此,我想获得您邀请的人的user_id。此时,我得到一个值,但始终是结果中最后一个人的user_id,而不是我选择的人。

打印出来

   <div id="InviteGroupMembers">
            <form action="<?php echo $_SERVER['PHP_SELF'] . "?group_id=" .$group_id; ?>" method="post">
                <div >
                    <input type="text" name="btnSearch" placeholder="Add people to group"/>
                </div>

                <div>
                    <button type="submit"  name="">Add</button>
                </div>
                </form>

            <form action="<?php echo $_SERVER['PHP_SELF'] . "?group_id=" .$group_id; ?>" method="post">
                    <?php
                    if (is_object($searchresult))
                        while ($row = $searchresult -> fetch_array()) {
                            echo "<div><p class='searchresults'><img src='uploads/" . $row['avatar'] . " " . "' alt='' />" .  $row['surname'] . " " . $row['name'] . " " . "<input type='submit' name='btnAddMember'class='addFriendToGroup' value='' /><input type='hidden' name='user_id' value='" . $row['user_id'] . "'/></p></div>"; }         

                    ?>
                </form>


        </div>

PHP

if (isset($_POST["btnSearch"])) {
    try {
        $searchinput = mysql_real_escape_string($_POST['btnSearch']);
        $searchresult = $user -> Search($searchinput);
    } catch(exception $e) {
        $feedback = $e -> getMessage("no results");
    }
}

if (isset($_POST["btnAddMember"])) {
    try{
        $group_receiver_id = mysql_real_escape_string($_POST['user_id']);
        var_dump($group_receiver_id);
    }
    catch(exception $e) {
        $feedback = $e -> getMessage("no results");
    }

}

【问题讨论】:

  • 嗯。 $searchresult 对象从何而来?它会返回超过 1 行吗?如果是这样,您在一种形式中有多个“user_id”输入,这是无效的。您发布的代码在很多方面似乎都是错误的;你需要先对编程逻辑有一个很好的理解......对不起
  • 非常容易受到 sql 注入读取和搜索的攻击 :)
  • if (isset($_POST["btnSearch"])) { 尝试 { $searchinput = mysql_real_escape_string($_POST['btnSearch']); $searchresult = $user -> 搜索($searchinput); } catch(exception $e) { $feedback = $e -> getMessage("no results"); } }

标签: php function types


【解决方案1】:

Barmar 建议的替代方案(效果很好),您还可以为每个成员输出一个单独的表单,因为提交只会发送其表单的值。这对我来说更有意义,因为每个成员都有一个提交按钮:

if (is_object($searchresult)) {
    while ($row = $searchresult -> fetch_array()) {
        echo <<<EOT
        <form action="{$_SERVER['PHP_SELF']}?group_id={$group_id}" method="post"> .
        <p class="searchresults">
        <img src="uploads/{$row['avatar']}" />{$row['surname']} {$row['name']}
        <input type="submit" name="btnAddMember" class="addFriendToGroup" value="" />
        <input type="hidden" name="user_id" value="{$row['user_id']}" />
        </p></form>
EOT; 
    }
}

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 2015-05-09
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多