Это кажется довольно простым, но я не могу найти хороший способ сделать это.
Скажем, на первой странице я создаю переменную
$myVariable = "Some text";
И действие формы для этой страницы - «Page2.php». Так в Page2.php, как я могу получить доступ к этой переменной? Я знаю, что могу сделать это с помощью сессий, но я думаю, что это слишком много для простой строки, и мне нужно только передать простую строку (имя файла).
Как мне этого добиться?
Спасибо!
Ответы:
HTML / HTTP не имеет состояния, другими словами, то, что вы делали / видели на предыдущей странице, совершенно не связано с текущей страницей. За исключением случаев, когда вы используете что-то вроде сеансов, куки или переменных GET / POST. Сеансы и файлы cookie довольно просты в использовании, поскольку сеансы намного безопаснее, чем файлы cookie. Более безопасный, но не полностью безопасный.
сессия:
Не забудьте выполнить
session_start();
оператор на обеих этих страницах, прежде чем пытаться получить доступ к$_SESSION
массиву, а также перед отправкой любого вывода в браузер.Cookie:
Большая разница между сеансами и файлами cookie заключается в том, что значение переменной будет храниться на сервере, если вы используете сеансы, и на клиенте, если вы используете файлы cookie. Я не могу придумать какой-либо веской причины использовать файлы cookie вместо сеансов, кроме случаев, когда вы хотите, чтобы данные сохранялись между сеансами, но даже тогда, возможно, лучше хранить их в БД и извлекать их на основе имени пользователя или идентификатора.
ПОЛУЧИТЬ И ПОЧТУ
Вы можете добавить переменную в ссылке на следующую страницу:
Это создаст переменную GET.
Другой способ - включить скрытое поле в форму, которая отправляется на вторую страницу:
А потом на второй странице:
Просто измените метод для формы,
post
если вы хотите сделать это по почте. Оба одинаково небезопасны, хотя GET легче взломать.Тот факт, что каждый новый запрос, за исключением данных сеанса, является совершенно новым экземпляром скрипта, поймал меня, когда я впервые начал писать код на PHP. Как только вы к этому привыкнете, все довольно просто.
источник
Спасибо за ответы выше. Вот как я это сделал, надеюсь, это поможет тем, кто следит. Я хочу передать регистрационный номер с одной страницы на другую, следовательно, regName и regValue :
Создайте свою первую страницу, назовите ее set_reg.php :
Создайте вторую страницу, назовите ее get_reg.php :
Хотя это и не так исчерпывающе, как ответ выше, для моих целей это просто иллюстрирует отношения между различными элементами.
источник
Передача данных в запросе
Вы можете либо внедрить его как скрытое поле в форму, либо добавить его URL-адрес действия формы
или
Обратите внимание, что это также иллюстрирует использование htmlentities и urlencode при передаче данных.
Передача данных в сессию
Если данные не нужно передавать на сторону клиента, тогда сеансы могут быть более подходящими. Просто вызовите session_start () в начале каждой страницы, и вы можете получить и установить данные в массив $ _SESSION.
Безопасность
Поскольку вы заявляете, что ваше значение на самом деле является именем файла, вы должны знать о последствиях безопасности. Если имя файла поступило со стороны клиента, предположим, что пользователь подделал это значение. Проверьте это на действительность! Что происходит, когда пользователь передает путь к важному системному файлу или файлу под своим контролем? Может ли ваш сценарий использоваться для "проверки" сервера на наличие файлов, которые существуют или не существуют?
Поскольку вы, очевидно, только начинаете здесь, стоит напомнить, что это относится к любым данным, которые поступают в $ _GET, $ _POST или $ _COOKIE - предположим, что ваш злейший враг создал содержимое этих массивов и кодируйте соответственно!
источник
Есть три способа передать значение в php.
Эти три метода используются для разных целей. Например, если мы хотим получить наше значение на следующей странице, мы можем использовать метод 'post' ($ _POST) как: -
Если нам требуется значение переменной на более чем одной странице, мы можем использовать переменную сеанса как:
Прежде чем использовать этот синтаксис для создания переменной SESSION, мы сначала должны добавить этот тег в самом начале нашей php-страницы.
Метод GET обычно используется для печати данных на той же странице, которая использовалась для ввода данных от пользователя. Его синтаксис такой:
Метод POST обычно использует более безопасный метод, чем GET, потому что когда мы используем метод Get, он может отображать данные в строке URL-адреса. Если данные являются более конфиденциальными данными, такими как пароль, то они могут быть inggeris.
источник
Сеансы были бы единственным хорошим способом, вы могли бы также использовать GET / POST, но это было бы потенциально небезопасно.
источник
попробуй этот код
используя скрытое поле, мы можем передать php varibale на другую страницу
page1.php
передать переменную php в скрытое значение поля, чтобы вы могли получить доступ к этой переменной на другой странице
page2.php
источник
страница 2
источник
Сеансы были бы единственным хорошим способом, вы могли бы также использовать GET / POST, но это было бы потенциально небезопасно.
Передача данных в сеансе Если данные не нужно передавать на клиентскую сторону, тогда сеансы могут быть более подходящими. Просто вызовите session_start () в начале каждой страницы, и вы можете получить и установить данные в массив $ _SESSION.
Безопасность Поскольку вы заявляете, что ваше значение на самом деле является именем файла, вы должны знать о последствиях безопасности. Если имя файла пришло со стороны клиента, предположим, что пользователь подделал это значение. Проверьте это на действительность! Что происходит, когда пользователь передает путь к важному системному файлу или файлу под своим контролем? Может ли ваш сценарий использоваться для "проверки" сервера на наличие файлов, которые существуют или не существуют?
Поскольку вы, очевидно, только начинаете здесь, стоит напомнить, что это относится к любым данным, которые поступают в $ _GET, $ _POST или $ _COOKIE - предположим, что ваш злейший враг обработал содержимое этих массивов, и кодируйте соответственно!
источник