передача переменной между страницами - PullRequest
1 голос
/ 15 ноября 2011

Это хороший способ передать переменную между страницами, используя метод $ _GET с URL:

<a href="input_obj.php?id='$id'&method=plain

и взять его в файл input_obj.php с таким кодом:

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

ИЛИ

использование сеанса - кто-то знает, как?

Ответы [ 6 ]

4 голосов
/ 15 ноября 2011

На самом деле это зависит от ваших потребностей: если вы передаете поисковые параметры между страницами, например, и переменные должны быть как постоянными, так и доступными для конечного пользователя (например, с помощью закладок), а затем передать их в 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'];
0 голосов
/ 15 ноября 2011

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

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

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

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

$_COOKIE["name"];

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

способомты отлично работает.

0 голосов
/ 15 ноября 2011

Это зависит от того, для чего предназначены данные, их типа и длины.Обычно передача переменных в строке запроса - это нормально.

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

0 голосов
/ 15 ноября 2011

GET - это разумный способ передачи переменных на другую страницу.

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

POST - это другой способ, но он требует отправки формы, которая потребует либо вмешательства пользователя, либо JavaScript.

0 голосов
/ 15 ноября 2011

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

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

0 голосов
/ 15 ноября 2011

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

...