Мне нужна помощь от всех вас.
Я создал форму с помощью 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>
но происходит то, когда несколько пользователей используют форму, идентичную идентификатору сеанса, и только один пользователь может сохранить форму и отражает ее в БД. другие формы не отправляются и не добавляются в БД.
Помогите мне в этой ошибке. Спасибо заранее.
Решение здесь не использует скрытые поля для идентификаторов: в данный момент у вас есть что-то вроде этого:
"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