接收错误的POST变量

时间:2018-05-04 12:51:47

标签: php forms session mysqli

我在这里遇到一个奇怪的问题。我有一个数据库,其中存储有关事件的已发送邀请的信息以及该请求的答案。喜欢:

event_id | event | attendee | invited | response
   1         1        1        yes       no
   2         1        2        yes       yes
   3         2        1        no        no

接下来,我通过mysqli和php在带有单选按钮的表格中显示结果,以便简单地编辑信息。但是,如果我发送表单经常(并非总是)发生,错误的POST变量将被移交,因此数据库通过更新错误信息而搞砸了。 被邀请甚至接受邀请的人,然后被视为未经邀请或被拒绝。

有谁可以告诉我,问题可能是什么?

//creates an empty array for the results of the database

sec_session_start();

$i = 0;
$_SESSION['i'] = array();
$_SESSION['email'] = array();
$_SESSION['ida'] = array();
$_SESSION['pid'] = array();

//db infortmaiton gets stored in the session
while ($row = $res->fetch_assoc()) {
 $_SESSION['i'][] = $i;
 $_SESSION['email'][] = $row["email"];
 $_SESSION['pid'][] = $row["idperson"];
 $_SESSION['ida'][] = $row["anmeldungsid"];

//radiobuttons with db info get displayed
<td>
    <label>
      <input type="radio" name="<? echo 'eingeladen'.$i?>" id="<? echo 'einja'.$i?>" value="Ja" <?php echo ($row["eingeladen"]=='Ja')?'checked':'' ?> onclick="showinvite('<? echo 'einja'.$i?>','<? echo 'link'.$i?>')"/>Ja</label><br/>
    <label>
      <input type="radio" name="<? echo 'eingeladen'.$i?>" id="<? echo 'einnein'.$i?>" value="Nein" <?php echo ($row["eingeladen"]=='Nein')?'checked':'' ?> onclick="showinvite('<? echo 'einja'.$i?>','<? echo 'link'.$i?>')"/>Nein</label>
</td>
//i gets counted up
<? $i++; ?> }

发送表单后,将打开一个脚本,其中foreach循环将通过会话来更新数据库

session_start();

foreach ($_SESSION['i'] as $i) {
    $ida =  $id[$i];
    $idp = $pid[$i];
    $email = $emaila[$i];
    $eingeladen = $_POST['eingeladen'.$i];
    $zusage = $_POST['zugesagt'.$i];

    if ($update_stmt->bind_param("sssii", $eingeladen, $zusage, $bewilligt, $ida, $idp))
    {
    // Update des Teilnahmestatus
    $update_stmt->execute();
    echo "<p style = 'color:green'>neuer Status: ".$bewilligt." - ".$eingeladen." - ".$zusage."</p><br/>";
    $inhaltn .= "neuer Status: ".$bewilligt." - ".$eingeladen." - ".$zusage."\n\n";
    }
    else {
        echo "<p style = 'color:red'>Vorbereitung des Update Befehls klappt nicht! TeilgenommenID: ".$idteilgenommen."</p><br/>";
     }
}

正如我所说,它似乎有效,但不是经常......

0 个答案:

没有答案