当多个用户使用它时,表单会话不起作用


Form session not working when multiple users use it

我需要你们所有人的帮助。

我用PHP创建了一个表单。这是一个学校申请登记表。它只有一页。

我需要为打开表单的每个人生成注册号(此处用作注册号的会话ID)。

我没有为所有人创建会话,而是使用了 ID。 也就是说,当有人提交表单时,它会检查数据库,如果注册号在那里,它将递增一个值并将当前表单添加到数据库。

我的代码在这里

<td>Application No : <input type="hidden" name="disablusr_dummyid" autocomplete="off" style="background:#f0efed;" value="00<?php
        include('config.php');
        $q="select MAX(auto_gen_id) from application_form";
        $result=mysql_query($q);
        $data=mysql_fetch_array($result);
        $max_val=$data[0];
        echo $max_val+1;
        ?>"/>
  <input type="hidden" name="applicant_id" autocomplete="off" value="00<?php
         include('config.php');
        $wer = "select MAX(auto_gen_id) from application_form";
        $resultgh = mysql_query($wer);
        $dates = mysql_fetch_array($resultgh);
        $erfdqwe = $dates[0];           
        echo $erfdqwe+1;
  ?>" />
    <input type="hidden" name="txt_applicant_id" style="display:none;" autocomplete="off" value="<?php
         include('config.php');
        $werqw = "select MAX(auto_gen_id) from application_form";
        $resultghasw = mysql_query($werqw);
        $dataqsax = mysql_fetch_array($resultghasw);
        $erfdqweqti = $dataqsax[0];         
        echo $erfdqweqti+1;
    ?>" /></td>

但是正在发生的事情是,当多个用户使用表单时,会生成相同的会话ID,并且只有一个用户能够保存表单并反映在数据库中。 其他表单未提交且未添加到DB。

帮助我解决此错误。 提前谢谢。

这里的解决方案不是使用 ID 的隐藏字段:此时你有这样的东西:

"INSERT INTO (id, ..., ...) VALUES('".addslashes($_POST['applicant_id']."', ...)

您应该重构逻辑以在之后计算id,这意味着您删除隐藏字段并执行以下操作:

<?php
   if (!empty($_POST)) {
    $wer = "select MAX(auto_gen_id) from application_form";
    $resultgh = mysql_query($wer);
    $dates = mysql_fetch_array($resultgh);
    $erfdqwe = $dates[0];           
    $new_applicant_id = $erfdqwe+1;           
   }

然后将$new_applicant_id使用到插入 sql 中。在旁注中,您的代码容易受到 SQL 注入的攻击,并且正在使用过时的函数。您应该尝试移动到mysqliPDO并且更可取的使用prepared statements