Передача переменной между страницами

Передача переменной между страницами

30.04.2019

Методы передачи данных с одной страницы на другую

Метод передачи данных формы
(методы GET или POST, есть ещё парочка, но о них не будем)

У нас есть файл-передатчик(transmitter) 1.php
.............

Текстовое поле
Поле для ввода пароля
Чекбокс(галка)
Радиокнопки - вариант1 - вариант2
.............И есть файл-приемник(receiver) 2.php
Принципиальное отличие GET и POST:

GET передаётся вместе с URL страницы приёмника. Цепляется к ней сразу после имени в виде перечислений
? - означает начало передачи данных
& - разделяет перечисления
= - приравнивает к имени переменной значение
URL(адрес): 2.php?pole1=[значение]&pole2=[значение]&pole3=[значение]&pole4=[значение] Какие-то значения могут быть пустыми, это значит, что им не присвоили никакого значения.

POST предаётся другой странице по средством прикрепления данных к заголовком отправки запроса HTTP.
Поэтому как передаются данные будет не видно, да и какие данные. Обычно используют именно его, особенно при работе с формой загрузки, когда нужно передавать файл в виде бинарных данных.

Метод передачи данных через URL(адресную строку)
Вот к приеру у нас есть обычная ссылка на странице
Ссылка Нажав на которую пользователь попадёт на страницу с именем file.php.
Тогда мы можем воспользоваться всё теме методом передачи GET и сформировать список параметров сами
Тогда при переходе по данной ссылке мы можем использовать данные переменные

Метод передачи данных через Cookies
Для этого нам понадобится знание хранения данных в браузере.
В данном случае все данные будут храниться в папке вашего компьютера определяемой браузером. Такие данные существуют только определённое количество времени. Через которые они просто чистятся, также их можно удалить и через сами браузеры
В сокращённом виде определение функции можно записать так:
setcookie([имя_cookie], [значение], [время_существования_в_секундах]); Вот к примеру я задаю cookie(печенье в простонародии) с именем name , со значением "Vasya" на 20 секунд;
setcookie("name", "Vasya", 20); Подробнее смотреть тут
Теперь на какую страницу данного сайта в течении 20 секунд после зарезервирования(определения) данной cookie мы не перешли, эта переменная будет доступна

Метод передачи данных через Сессии(Sessions)
Эти переменные хранятсмя на сервере в временной папке и доступ к ним имеет исключительно только сервер. Сессии существуют до закрытия пользователем браузера. Но в отличии данных уникальный идентификатор сессии хранится либо в COOKIES о которых мы говорили выше, либо передаётся через переменную GET способом, о котором мы уже также сказали. На этом останавливаться не будем...

Для начала нужно зарегистрировать сессии на странице, это делается помощью функции session_start()
Затем можно с помощью глобального массива $_SESSION заносить в сессию значения
Вот пример: file1.php

Пока вы не закроете браузер вы можете использовать данные переменные на всём сайте, на котором они были зарегистрированны

Помимо этих способов существуют ещё, самые важные я вам перечислил.
Есть также способ передачи данных скрипту JS, который будет реализовывать отправку данных на сервер в рабочем режиме
(Вы сможете продолжать работать с сайтом)
На основе этой передачи работает принцип AJAX технологии.

И конечно же... Все перечисленные типы можно совмещать на одной странице, например... Передача данных формы+данные через URL
.............

Итак, мы снова продолжаем изучение основ PHP и в этой статье познакомимся со способами передачи переменных в PHP, а именно с методами GET и POST . Каждый из них имеет свои плюсы и минусы, и применяется в соответствующих ситуациях, речь о которых пойдет в данной статье. Мы также рассмотрим примеры кода, которые демонстрируют работу методов POST и GET.

Передача переменных при помощи метода GET

Данный метод передачи переменных применяется в PHP для передачи переменных в файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера. Примером может быть, например, ссылка на статью в WordPress без использования ЧПУ (SEF), которая имеет примерно следующий вид:

Https://сайт/?p=315

То есть в данном случае передается переменная $p со значением 315. Теперь давайте более подробно на примере рассмотрим работу метод GET. Пускай нам нужно передать в файл три переменных $a, $b и $c методом GET и вывести их сумму на экран. Для этого можно использовать следующий код.

$a = $_GET["a"]; $b = $_GET["b"]; $c = $_GET["c"]; $summa = $a + $b + $c; echo "Сумма $a + $b + $c = $summa";

Поскольку все переменные перед передачей будут помещаться в глобальный массив GET (), то мы первым делом присваиваем нашим переменным значения соответствующих элементов массива GET. Делаем это в самом начале во избежание разнообразных ошибок при передаче переменных. Далее для демонстрации работы прописываем произвольную формулу и выводим результат на экран.

Для проверки работы метода GET достаточно просто добавить к ссылке на файл знак вопроса «?» и через амперсанд «&» перечислить переменные с их значениями. Пускай у нас есть файл get.php , который лежит в корне сайта . Для того чтобы передать в файл переменные, достаточно прописать в адресной строке следующее.

Https://сайт/get.php?a=1&b=2&c=3

Как видно с примера, сначала мы добавляем знак вопроса сразу после названия файла. Далее прописываем переменную и через равно указываем ее значение. После этого через амперсанд аналогичным образом перечисляем другие переменные. Теперь при переходе по этой ссылке нам выведется сумма переменных $a, $b и $c.

Данный способ очень простой и не требует создания дополнительных файлов. Все необходимые данные поступают прямо через адресную строку браузера.

Ну а теперь давайте перейдем ко второму способу передачи переменных в PHP – методу POST .

Передача переменных в PHP при помощи метода POST

Данный способ позволяет скрыто передавать переменные с одного файла в другой. Как вы уже поняли, обычно для этих целей используются два файла. В первом находится форма для ввода исходных данных, а во втором исполнительный файл, который принимает переменные. Для демонстрации давайте рассмотрим следующий код.

Код первого файла с формой для отправки данных. Дадим ему название post-1.php

  • action – указываем файл, в который будут передаваться переменные.
  • method – метод передачи переменных. В нашем случае это метод POST.
  • name – название формы. Одновременно в файл будет передана переменная с таким именем.

Текстовые поля:

  • name – имена переменных. В нашем случае это имя и фамилия (переменные name и lastname).
  • type – тип поля. В нашем случае это текстовое поле.
  • name – имя кнопки и переменной, которая будет передана вместе с другими переменными.
  • type – тип кнопки. В нашем случае это кнопка для отправки данных.
  • value – текст на кнопке.

Код второго файла, который будет служить приемником переменных. Назовем его post-2.php

$name = $_POST; $lastname = $_POST; echo "Значения переменных, переданных методом POST - $name и $lastname";

Как и с методом GET, мы первым делом присваиваем переменным значения соответствующих элементов глобального массива POST . Далее для наглядности выводим эти переменные на экран при помощи .

Теперь при загрузке первого файла у нас загрузится форма. После введения данных жмем по кнопке «Отправить», в результате чего в новой вкладке у нас откроется страница со вторым файлом, на которой выведутся значения, прописанные в форме на предыдущей странице. То есть второму файлу будут переданы значения переменных с первого файла.

На этом данная статья про передачу переменных в PHP подошла к концу. Если вы не хотите пропустить появления других статей на блоге, рекомендую подписаться на новостную рассылку любым удобным способом в пункте «Подписка» либо воспользоваться формой ниже.

На этом все. Удачи вам и успеха в освоении основ PHP.

Рассматриваются 3 способа: массив $_GET, $_POST, $_SESSION

1. Через формы ($_GET)

При нажатии кнопки типа submit в пользовательской форме данные, введенные в ее поля, передаются сценарию, расположенному на указанной в параметре action заголовка формы страницу. Они доступны в этом сценарии в переменных, одноименных с соответствующими элементами формы (если в файле php.ini установлен в on параметр reg-ister_globals), а также через массивы $HTTP_POST_VARS (если в файле php.ini установлен в on параметр track_vars) и $_POST (в РНР версий 4.1 и старше).
В форме также могут быть указаны скрытые поля – т. е. поля типа hidden. В эти поля посетитель не может вводить свою информацию, однако данные, указанные в их параметрах value, отправляются вместе с формой сценарию-обработчику.
Принцип передачи данных по страницам с помощью формы прост: один скрипт выводит на страницу в форму скрытые поля с нужными данными, а другой скрипт – обработчик формы – их использует. Недостаток этого способа ясен: данные скрытых полей можно узнать, просмотрев исходный код страницы с формой, так что защита от подделки и конфиденциальность здесь отсутствует.

1.php:

2.php:
@$var=$_GET["abc"];@

2. Через формы ($_POST)

Здесь уже не все так очевидно, как в случае $_GET, однако сложного тоже ничего нет. Каждый из нас ежедневно сталкивается с html-формами (авторизация, регистрация, поиск и т.д. и т.д.). А как и куда передаются данные, введенные вами в форме? Рассмотрим самую простую форму:





Рассмотрим первую строку. Значение атрибута action определяет файл обработчик формы, т.е. тот файл, которому будут доступны переменные формы. Атрибут action может быть и пустым, тогда обрабатывать форму можно в той же странице, в которой она выводится. Атрибут method определяет, в какой массив будут помещены значения полей формы. Если method=”get”, переменные будут доступны в массиве $_GET, еслиmethod=”post” – $_POST. Теперь перейдем непосредственно к полям формы. Мы создали всего одно текстовое поле с атрибутом name=”some_field”, который и определяет имя переменной, которое будет соответствовать значение поля. Т.е., после нажатия кнопки отправить, доступ к значению поля some_field можно получить как $_POST[‘some_field’]. На самом деле, есть еще один массив $_REQUEST, который может содержать как массив $_GET, так и массив $_POST, но его я встречал только в backend-файлах AJAX приложений, поэтому ничего по поводу того, как его использовать сказать не могу.
Обратимся к случаю, когда обработчик формы и сама форма находятся в одном файле. Вот пример кода:

if (empty($_POST)) {
?>





}
else {
print_r($_POST);
}

Здесь мы проверяем, если массив $_POST пустой, то выводим форму, если нет – распечатываем его содержимое. Обратите внимание, что если вместо функции empty мы будем использовать функцию isset, пример работать не будет, поскольку массив $_POST существует всегда, а вот пустой он или нет определяем мы с вами.

3. Через сессию ($_SESSION)

Передача информации между страницами возможна с помощью механизма работы с сессиями. Смысл его в том, что значения определенных переменных сохраняются в файле в папке временных файлов сервера, а посетителю отправляется в cookie уникальный идентификатор этого файла (или, если браузер посетителя cookie не принимает, идентификатор присоединяется ко всем ссылкам на сайте, ведущим на другие его страницы). Впоследствии при получении от посетителя идентификатора сессии (имя cookie, содержащего его, жестко определяется в настройках web-сервера) в том случае, если в папке временных файлов существует соответствующий этому идентификатору файл, этот файл считывается и значения всех переменных, указанные в нем, передаются сценариям на страницах сайта.
Открыв сессию командой session_start () и зарегистрировав для сессии нужные переменные командой session_register (), можно в сценариях на других страницах сайта (после вызова той же команды session_start ()) работать с этими переменными, как если бы они были определены и установлены в этих же самых сценариях. (Подробнее о данных командах и особенностях их использования в зависимости от настроек файла php.ini читайте в Описании РНР.)
Кроме того, все эти переменные доступны как элементы массивов $HTTP_SESSION_VARS и (в РНР 4.1) $_SESSION (использовать эти массивы предпочтительнее, так как при этом отсутствует риск передачи значений переменных сценарию-обработчику путем указания их значений в адресной строке при неоткрытой сессии).
Если в php.ini установлен в on параметр session.auto start, то открывать сессию для ее использования не обязательно – достаточно лишь зарегистрировать нужные переменные командой sessionregister, чтобы они сохранялись в качестве сессионных.

$id = $_GET["id"]; $method = $_GET["method"];

используя сеанс – есть кто-то идея, как?

Это зависит от ваших потребностей. Действительно, если вы, например, передаете аргументы поиска между страницами, а переменные должны быть как постоянными, так и доступными для конечного пользователя (например, посредством закладок), а затем передавать их по URL-адресу (но обычно не используют кавычки, например, у вас есть $id в "input_obj.php?id="$id"&method=plain)

Если вы действительно передаете внутренние переменные между сценариями, это лучше сделать с помощью переменных $_SESSION . Помните, что конечные пользователи могут легко изменять переменные, проходящие через URL-адреса. Если они не предназначены для использования конечным пользователем, это может быть реальной проблемой. Используя $_SESSION , вы изолируете переменные вашего скрипта от подделки конечным пользователем, когда необходимо изолировать их. (если, конечно, переменные не создаются другим пользователем через GET / POST / COOKIE)

//page1.php session_start(); $_SESSION["id"] = $id; //page2.php session_start(); echo $_SESSION["id"];

Переменные GET – намного лучший способ. Когда вы начинаете отбрасывать переменные в сеанс, у него могут быть побочные эффекты, такие как копирование / вставка URL-адреса из браузера в браузер или попытка закладки, может вызвать разные страницы (что, следовательно, является кошмаром для SEO). Кроме того, у вас могут возникнуть сложности, если вы когда-либо начинаете кластеризовать свои серверы b / c, вам нужно будет справиться с переключением сеанса.

IMHO, лучшим решением является использование mod_rewrite для реализации переменных на основе пути … вы получаете довольно URL-адреса со всеми преимуществами GET-варов.

GET – разумный способ передать переменные на другую страницу.

$_SESSION и cookies – это еще один способ, но он не позволит пользователю добавлять закладки на страницу.

POST – это еще один способ, но для этого требуется представление формы, которое должно было бы потребовать вмешательства пользователя или javascript.

Это зависит от того, для чего предназначены данные, его типа и длины. Как правило, передача переменных в строке запроса прекрасна.

Имейте в виду, что при принятии изменяемых параметров вам нужно убедиться, что они являются тем, что вы ожидаете от них. Например, я мог бы изменить?id=5 на?id=hello и, возможно, разорвать ваше приложение. Чтобы исправить это, мы могли бы присваивать идентификатор целому числу:
$id = isset($_GET["id"]) ? (int) $_GET["id"] : 0;

Вы также можете использовать файлы cookie. Они отправляются следующим образом:

Setcookie(name, value, expire, path, domain);

вы можете опустить путь и переменные домена. Это должно быть объявлено перед тегом. Имя – это просто имя, с которым вы его получите. Значение – это то, что будет возвращено и истечет – время, в которое истекает срок действия файла cookie (он записывается в виде time() + $timeTillExpire где timetillexpire – это значение переменной или константы, которое вы задали). Это, конечно, имеет ограничение, если у человека есть файлы cookie, это не сработает.

Вы получаете cookie с:

$_COOKIE["name"];

и возвращает значение

то, как вы это делали, отлично работает.

Если вы просто используете переменные в своем PHP-скрипте, вам не нужно «передавать» их. Вы можете создать переменную глобально и получить доступ к ней с другой страницы.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows