【问题标题】:Dealing with POST variables处理 POST 变量
【发布时间】:2015-07-25 11:46:10
【问题描述】:

我的 PHP-Fusion 注入(插件)有问题。我创建了一个 POST 表单,但是当我尝试调用这些 POST 变量时,它们不会回显(我计划将它们添加到数据库中)。我的代码:

$id_ucznia = $_GET["id"];
$result2   = dbquery("SELECT id,imiona,nazwiska,dom,punkty FROM ".DB_ZAPISY." WHERE (funkcja = 'Student') AND (id = '".$id_ucznia."')");

if (dbrows($result2)) {

    while ($data2 = dbarray($result2)) {

        echo '<form method="POST" action="">
                  <input type="hidden" name="uczen_id" value="'.$id_ucznia.'">
                  <table border="0" align="center">
                      <tr><td align="right">Imiona ucznia: </td> <td align="left"><input type="text" class="input" name="imiona" value="'.$data2["imiona"].'" disabled></td></tr>
                      <tr><td align="right">Nazwiska ucznia: </td> <td align="left"><input type="text" class="input" name="nazwiska" value="'.$data2["nazwiska"].'" disabled></td></tr>
                      <tr><td align="right">Dom ucznia: </td> <td align="left"><input type="text" class="input" name="dom" value="'.$data2["dom"].'" disabled></td></tr>
                      <tr><td align="right">Aktualne punkty: </td> <td align="left"><input type="text" class="input" name="punkty_start" value="'.$data2["punkty"].'" disabled></td></tr>
                      <tr><td align="right">Punkty do dodania: </td> <td align="left"><input type="text" class="input" name="ile"></td></tr>
                      <tr><td align="right">Uzasadnienie: </td> <td align="left"><input type="text" class="input" name="zaco" maxlength="500"></td></tr>
                      <tr><td colspan="2" align="center"><input type="submit" class="button" name="dodaj_punkty" value="Dodaj punkty"></td></tr>
                  </table>
              </form>
        ';

    }

}

if (isset($_POST['dodaj_punkty'])) {

    $imiona           = $_POST["imiona"];
    $nazwiska         = $_POST['nazwiska'];
    $dom              = $_POST['dom'];
    $punkty_start     = $_POST['punkty_start'];
    $ile              = $_POST['ile'];
    $zaco             = $_POST['zaco'];
    $punkty_uczen_end = $punkty_start + $ile;
    $kto_akcja        = $userdata['user_name'];
    $kto_id           = $userdata['user_id'];
    $komu             = ''.$imiona.' '.$nazwiska.'';
    $dzis             = date("Y-m-d H:i:s");
    $result3          = dbquery("SELECT id,nazwa,punkty FROM ".DB_DOMY." WHERE `nazwa` = '".$dom."'");

    if (dbrows($result3)) {

        while ($data3 = dbarray($result3)) {

            $id_domu          = $data3["id"];
            $nazwa            = $data3["nazwa"];
            $punkty_dom_start = $data3["punkty"];

        }

    }

    $punkty_dom_end = $punkty_dom_start + $ile;
    echo 'Dla ucznia ('.$imiona.$nazwiska.') dodano: '.$punkty_uczen_end.' a dla domu ('.$id_domu.$nazwa.'): '.$punkty_domu_end.' ';

    $resulta = dbquery("UPDATE ".DB_DOMY." SET punkty = '{$punkty_dom_end}' WHERE id = '{$id_domu}';");
    $resultb = dbquery("INSERT INTO ".DB_RANKING_DOMOW." (ile, akcja, kto, komu, opis) VALUES ('{$ile}','+','{$kto_akcja}','{$komu}','{$zaco}');");
    $resultc = dbquery("UPDATE ".DB_ZAPISY." SET punkty = '{$punkty_uczen_end}' WHERE id = '{$uczen_id}';");
    $resultd = dbquery("INSERT INTO ".DB_RU." (kiedy, kto_dane, kto_id, komu, ile, zaco, co) VALUES ('{$dzis}','{$kto_akcja}','{$kto_id}','{$komu}','{$ile}', '{$zaco}', '+');");

    redirect(FUSION_SELF.$aidlink."&wykonane");

}

【问题讨论】:

    标签: php html post input content-management-system


    【解决方案1】:

    HTML 表单输入元素设置为disabled,因此不会提交它们的值。可能是 readonlyhidden 属性。

    提供的代码在使用前复制了一些变量(冗余)。关于内容管理系统使用这种做法来保存表单发布数据的清理副本(以防止SQL injection)。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 2017-06-23
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2021-03-12
      • 2016-07-31
      相关资源
      最近更新 更多