PHP Передать переменную на следующую страницу

Это кажется довольно простым, но я не могу найти хороший способ сделать это.

Скажите на первой странице, я создаю переменную

$myVariable = "Some text";

И действие формы для этой страницы - "Page2.php". Итак, в файле Page2.php, как я могу получить доступ к этой переменной? Я знаю, что могу делать это с сессиями, но я думаю, что это слишком много для простой строки, и мне нужно просто передать простую строку (имя файла).

Как я могу это достичь?

Спасибо!

Ответ 1

HTML/HTTP является апатридом, другими словами, то, что вы делали/видели на предыдущей странице, полностью не связано с текущей страницей. За исключением случаев, когда вы используете что-то вроде сеансов, файлов cookie или GET/POST. Сессии и файлы cookie довольно просты в использовании, причем сеанс гораздо безопаснее, чем файлы cookie. Более безопасный, но не полностью безопасный.

сессия:

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

Не забудьте запустить session_start(); на обеих этих страницах, прежде чем пытаться получить доступ к массиву $_SESSION, а также до того, как какой-либо вывод будет отправлен в браузер.

Cookie:

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

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

GET и POST

Вы можете добавить переменную в ссылку на следующую страницу:

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

Это создаст переменную GET.

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

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

И затем на второй странице:

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

Просто измените метод post формы, если вы хотите сделать это через сообщение. Оба одинаково небезопасны, хотя GET легче взломать.

Тот факт, что каждый новый запрос, за исключением данных сеанса, совершенно новый экземпляр скрипта поймал меня, когда я впервые начал кодирование в PHP. Как только вы привыкнете к этому, это довольно просто.

Ответ 2

Спасибо за ответы выше. Здесь, как я это сделал, я надеюсь, что это поможет тем, кто следует. Я хочу передать регистрационный номер с одной страницы на другую, поэтому regName и regValue:

Создайте свою первую страницу, назовите ее set_reg.php:

<?php

session_start();

$_SESSION['regName'] = $regValue;

?>

<form method="get" action="get_reg.php">
    <input type="text" name="regName" value="">
    <input type="submit">
</form>

Создайте свою вторую страницу, назовите ее get_reg.php:

<?php

session_start();

$regValue = $_GET['regName'];

echo "Your registration is: ".$regValue.".";

?>

<p><a href="set_reg.php">Back to set_reg.php</a>

Хотя это не так полно, как ответ выше, для моих целей это просто иллюстрирует связь между различными элементами.

Ответ 3

Передача данных в запросе

Вы можете вставить его как скрытое поле в свою форму или добавить его URL-адрес действия своих форм

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';

или

echo '<form method="POST" action="Page2.php?myVariable='.
    urlencode($myVariable).'">";

Обратите внимание, что это также иллюстрирует использование htmlentities и urlencode при передаче данных.

Передача данных в сеансе

Если данные не нужно передавать на клиентскую сторону, то сеансы могут быть более уместными. Просто позвоните session_start() в начале каждой страницы, и вы можете получить и установить данные в массив $_SESSION.

Безопасность

Поскольку вы указываете, что ваше значение на самом деле является именем файла, вам необходимо знать о последствиях безопасности. Если имя файла поступило с клиентской стороны, предположите, что пользователь вмешался в это значение. Проверьте его на достоверность! Что происходит, когда пользователь передает путь к важному системному файлу или файл под их контролем? Может ли ваш script использоваться для "зондирования" сервера для файлов, которые существуют или не существуют?

Поскольку вы явно начинаете здесь, стоит упомянуть, что это касается любых данных, которые поступают в $_GET, $_POST или $_COOKIE. Предположим, ваш худший враг создал содержимое этих массивов и код соответственно!

Ответ 4

Существует три метода передачи значения в php.

  • По почте
  • Получите
  • Задание переменной сеанса

Эти три метода используются для разных целей. Например, если мы хотим получить наше значение на следующей странице, мы можем использовать метод post ($ _POST) как: -

$a=$_POST['field-name'];

Если нам требуется значение переменной на более чем одной странице, мы можем использовать переменную сеанса как: -

$a=$_SESSION['field-name];

Прежде чем использовать этот синтаксис для создания переменной SESSION, нам сначала нужно добавить этот тег в самом начале нашей php-страницы

session_start(); 

Метод GET обычно используется для печати данных на той же странице, которая использовалась для ввода данных от пользователя. Его синтаксис таков:

$a=$_GET['field-name'];

Метод POST обычно более безопасен, чем GET, потому что, когда мы используем метод Get, чем он может отображать данные в строке URL. Если данные более чувствительные данные, такие как пароль, то это может быть inggeris.

Ответ 5

Сессии будут единственным хорошим способом, вы также можете использовать GET/POST, но это будет потенциально небезопасно.

Ответ 6

попробуйте этот код

используя скрытое поле, мы можем передать php varibale на другую страницу

page1.php,

<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
 <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
 <button type="submit">Submit</button>
</form>

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

page2.php

<?php
 $text=$_POST['text'];
 echo $text;
?>

Ответ 8

**page 1**
<form action="exapmple.php?variable_name=$value" method="POST"> 
    <button>
        <input  type="hidden" name="x">
    </button>
</form>`

стр. 2

if(isset($_POST['x'])) {
    $new_value=$_GET['variable_name'];
}