У меня есть форма, использующая POST и переменную. Как бы установить эту переменную в $ _POST, чтобы после отправки формы я все равно могу получить переменную?
Я попробовал просто
$_POST['variable'] = $variable;
Он заканчивается пустым.
Вы должны либо поместить эту переменную в скрытое поле в свою форму, либо использовать переменную сеанса.
<form method="POST" action="someactionpage.php"> <input type="hidden" name="my_var" value="<?php echo $myvar; ?>" /> <!-- ... --> </form>
И получить его после в someactionpage.php с $_POST['my_var']
когда форма отправлена.
Просто сохраните его в переменной $ _SESSION
<?php session_start (); // Just once at the beginning of your code // ... $_SESSION['my_var'] = $myvar; ?>
и получить его на другой странице с помощью
<?php session_start (); // Same than before // ... echo $_SESSION['my_var']; ?>
Как указано в некоторых ответах и комментариях, вы всегда должны проверять наличие переменной, потому что у вас нет гарантии этого. Просто используйте функцию isset
if (isset ($_SESSION['my_var'])) // Do stuff with $_SESSION['my_var']
или
if (isset ($_POST['my_var'])) // Do stuff with $_POST['my_var']
Как отметил Колинк в комментариях, значение поля (с помощью POST) можно легко увидеть и изменить пользователем. Поэтому всегда предпочитайте переменные сеанса, если это действительно некритическая информация.
PHP – это серверный язык! Вы не можете установить переменную и использовать ее в другом экземпляре. Это означает, что PHP сбрасывает все данные после обработки перезагрузки. Чтобы настроить переменную, определенную после перезагрузки, вы должны использовать текущий сеанс. См .: http://de1.php.net/manual/en/book.session.php
<?php session_start(); $_SESSION['variable'] = 'my content';
Вы можете использовать $ _POST ['variable'] = $ foo для установки переменной post. $ _POST ['variable'] будет продолжать устанавливаться до тех пор, пока скрипт php не завершит выполнение, или пока вы не будете использовать: unset ($ _ POST ['variable']). Если вы пытаетесь сохранить переменную вокруг сеансов (как это звучит), вы должны использовать сеанс.
в сессии 1:
session_start(); $_SESSION['variable'] = 'foo';
для получения в другом вызове сервера:
session_start(); $variable = $_SESSION['variable'];
Переменные $ _POST отправляются с предыдущей страницы на страницу, в которой вы сейчас находитесь.
Это означает, что на самом деле вы не должны устанавливать POST-переменную, вы должны только получать ее содержимое.
Если вы хотите установить переменную post при следующем отправке формы, вы можете сделать следующее:
<input type="hidden" name="variable" value="<?php echo $_POST['variable']" />
Это означает, что страница, которую вы отправляете, сможет получить доступ к вашей переменной следующим образом:
$variable = $_POST['variable'];
Если вы хотите, чтобы переменная оставалась с определенным пользователем, вы должны заглядывать в сеансы.
Вы можете установить $ _POST ['my_var'] (любое имя) до или после отправки:
<input type="text" name="my_var" value="<?= $myvar ?>" />
(Обратите внимание: тип поля не должен быть «скрытым», как опубликовано ранее). Если, скажем, у вас есть код, который обрабатывает форму из двух разных типов экранов и должен изменить один из форм vars после отправки, просто сделайте это в код после отправки:
$_POST['t_mytext'] = "changed value (or whatever)";
Попробуй это:
$variable = isset($_POST['variable']) ? $_POST['variable'] : '';