Я создаю веб-сайт на PHP и хочу, чтобы мой идентификатор пользователя загружался в таблицу билетов, когда вы заказываете билет. Существует веб-страница, на которой вы можете выбрать билет, сумму и идентификатор, который уже указан в виде ярлыка.
Первый код добавляет данные в мою базу данных
function best(){
global $db, $errors;
// receive all input values from the form
$ticket = e($_POST['tickety']);
$aantall = e($_POST['aantal']);
$usidd = e($_POST['usid']);
// form validation: ensure that the form is correctly filled
if (empty($ticket)) {
array_push($errors, "Ticket is verplicht");
}
if (empty($aantall)) {
array_push($errors, "Aantal is verplicht");
}
// order ticket if there are no errors in the form
if (count($errors) == 0) {
$con = new PDO("mysql: host=localhost; dbname=website", "root", "");
mysqli_query($db, $query);
$_SESSION['success'] = "Ticket besteld";
header('location: index.php');
$query = "INSERT INTO tickety (ticket, aantal, userid)
VALUES('$ticket', '$aantall', '$usidd')";
mysqli_query($db, $query);
}
}
Этот код определяет поля ввода
<form method = "post" action = "ticketpag.php">
<?php echo display_error(); ?>
<div class = "input_group">
ID
</br>
<input type='hidden' name='usid'>
<h4><?php
echo $_SESSION['user']['id'];
?></h4>
</input>
Ticket
</br>
<select name='tickety'>
<?php
$query = "SELECT * FROM `stok`";
$result = mysql_query($query);
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
echo "<option>".$row['naam']."</option>";
}
?>
</select>
</br>
Aantal
</br>
<select name = "aantal">
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
<option value = "9">9</option>
<option value = "10">10</option>
<option value = "11">11</option>
<option value = "12">12</option>
<option value = "13">13</option>
<option value = "14">14</option>
<option value = "15">15</option>
<option value = "16">16</option>
<option value = "17">17</option>
<option value = "18">18</option>
<option value = "19">19</option>
<option value = "20">20</option>
</select>
</div>
<div class = "input-group">
<button type = "submit" class = "btn" name = "bestel_btn"> Bestellen</button>
<a href = "index.php"> Terug</a>
</div>
</form>
Не рекомендуется выполнять код после заголовка перенаправления (например, header('location: index.php');). Вы должны сделать все, что вам нужно, до этого, а затем die();, чтобы убедиться, что текущая страница не пропускает какие-либо данные.
P.S. Почему вы смешиваете mysql_ и mysqli_? Не надо. mysql_ мертв, для начала. (см. php.net/manual/en/intro.mysql.php)
Дело не в этом, я хочу сначала исправить эту проблему
Пожалуйста, не включайте мусорный текст только для того, чтобы обойти фильтр, укажите более подробную информацию.
@JopRill Что вы видите, когда вставляете echo $_SESSION['user']['id']; в best()? Вы не должны использовать POST для доставки существующих данных SESSION.






Добавить $ _SESSION ['user'] ['id']; в поле ввода вместо метки, и он должен работать.
Пример:
<input type = "hidden" name = "usid" id = "usid" value = "<?php echo $_SESSION['user']['id'];?>" />
Скрытые поля пользователю не показываются.
Добавление: Но, как упомянул @mickmackusa, отправка существующих данных SESSION с использованием запроса POST является плохой практикой. Вместо этого проверьте и посмотрите, что происходит, когда вы выводите $ _SESSION ['user'] ['id'] внутри best (). Вы не должны использовать POST для доставки существующих данных SESSION.
В какой области вы бы посоветовали?
Это все еще не дает мне идентификатор пользователя в моей базе данных
@JopRill Что произойдет, если вы выведете $ _SESSION ['user'] ['id']; ценность для браузера? Показывает ли это ценность? И является ли поле ввода частью from?
На веб-странице он показывает мне правильный идентификатор, но я думаю, что имя usid не связано с ним или что-то в этом роде, и я не знаю, как это исправить
@JopRill Не могли бы вы обновить свой вопрос и добавить к нему всю форму? Вы должны убедиться, что скрытое поле ввода также является частью вашей формы.
@JopRill Вы не устанавливаете значение в своем коде. Не могли бы вы заменить поле ввода моим образцом, приведенным выше? Поэтому замените: <input type = 'hidden' name = 'usid'> <h4> <? Php echo $ _SESSION ['user'] ['id']; ?> </h4> с <input type = "hidden" name = "usid" id = "usid" value = "<? php echo $ _SESSION ['user'] ['id'];?>" />
@Yvo С какой стати вы посоветуете OP отправлять идентификатор через POST, если он уже хранится в SESSION? Плохой совет.
@JopRill Вы получили плохой совет.
@mickmackusa Поскольку он спросил, как отправить его с помощью POST, я предположил, что он не может получить его в коде для обработки формы. Если он может получить СЕССИЮ в этом коде, то, конечно, это лучший способ.
Важно направлять неопытных программистов в правильном направлении, даже если они об этом не просят. Почему? Поскольку StackOverflow не является индивидуальным взаимодействием. Эту страницу будут просматривать тысячи будущих исследователей, и некоторые неосознанно скопируют эту плохую практику. По этой причине вам следует избегать использования плохих методов программирования для достижения большего блага.
@mickmackusa В этом есть смысл. Спасибо за совет. Так что в этом случае лучше удалить мой ответ?
Вы не можете удалить ответ с зеленой галочкой.
@mickmackusa Упомянул вас в моем комментарии и добавил ваше предложение ;-)
Спасибо, буду иметь это в виду, но пока это работает
Где у вас
input/textareaсname=usid?