2014-12-06 66 views
0

我需要你們的幫助。當多個用戶使用它時,表格會話不工作

我已經使用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反映正在發生的事情是。其他表格不會被提交,也不會被添加到數據庫中。

幫我在這個錯誤..在此先感謝。

+3

爲什麼不在mysql中使用自動遞增ID來註冊ID? – 2014-12-06 07:47:12

+1

爲什麼不直接在提交後生成id ... – Toumash 2014-12-06 07:50:07

+1

會話在哪裏? – bansi 2014-12-06 07:52:52

回答

0

這裏的解決辦法是不使用的ID的隱藏字段: 這時u有這樣的事情:

你應該重構你的邏輯來計算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插入INSERT sql。 在旁註中,您的代碼對於SQL注入而言很脆弱,並且正在使用過時的函數。 你應該嘗試移動到mysqliPDO和更好的使用prepared statements

+0

我已經刪除了所有會話目標,並更改爲從會話提交字段獲取註冊ID。就像我在提交表單時生成id一樣。 – Purushoth 2014-12-15 07:52:12