Сессия формы не работает, когда ее используют несколько пользователей

0

Мне нужна помощь от всех вас.

Я создал форму с помощью PHP. это форма регистрации школьного приложения. он имеет только одну страницу.

Мне нужно создать регистрационный номер (идентификатор сеанса, используемый здесь как регистрационный номер) для всех, кто открывает форму.

вместо создания сеанса я использовал 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>

но происходит то, когда несколько пользователей используют форму, идентичную идентификатору сеанса, и только один пользователь может сохранить форму и отражает ее в БД. другие формы не отправляются и не добавляются в БД.

Помогите мне в этой ошибке. Спасибо заранее.

  • 3
    почему бы не использовать идентификатор автоинкремента в MySQL для регистрации идентификатора?
  • 1
    Почему бы вам просто не создать идентификатор после отправки ...
Показать ещё 10 комментариев
Теги:
forms
session
sessionid

1 ответ

0

Решение здесь не использует скрытые поля для идентификаторов: в данный момент у вас есть что-то вроде этого:

"INSERT INTO (id,...,...) VALUES('".addslashes($_POST['applicant_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- $new_applicant_id INSERT. В боковом коде ваш код уязвим для SQL-инъекций и использует устаревшие функции. Вы должны попытаться перейти к mysqli или PDO и предпочтительно использовать prepared statements

  • 0
    я удалил все цели сеанса и изменил его, чтобы получить регистрационный идентификатор из поля отправки сеанса. как я генерирую идентификатор при отправке формы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню