X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Передача данных между страницами., Объясните какие существуют...
RussiaStudent
RussiaStudent
Topic Starter сообщение 18.12.2008, 18:14; Ответить: RussiaStudent
Сообщение #1


Я уже месяц изучаю PHP, дочитываю свою первую книгу по этому языку, но в этой книге толком не написано как передаются данные между страницами... В книге только показана передача данных через форму методами GET и POST, да и в них я толком разобраться не сумел.
Вот к примеру есть у меня страница index.php с формой и 3 полями данных
...
<form method="GET" action="file.php">
   <input type="text" name="pole1">
   <input type="text" name="pole2">
   <input type="text" name="pole3">
</form>
...

Почему при передаче хоть методом GET хоть POST у друга данные передаются, а у меня нет?
Вот файл file.php
<?
echo "поле1:".$pole1;
echo "поле2:".$pole2;
echo "поле3:".$pole3;
?>


В книжке вообще мало что написано, есть примерчик, но он не работает...
И всё же я очень бы хотел узнать, какие методы передачи данных существуют :)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KURT [197BD]
KURT [197BD]
сообщение 18.12.2008, 18:23; Ответить: KURT [197BD]
Сообщение #2


потому что у тебя опция "register_globals" в конфигурационном файле php.ini установлена в "off".

в твоем случае лучше использовать массивы $_POST и $_GET

<?
echo "поле1:" . $_GET['pole1'];
echo "поле2:" . $_GET['pole2'];
echo "поле3:" . $_GET['pole3'];
?>




можешь передавать значения переменных через адрессную строку (это тот же GET метод). При этом, после наименования файла, к котрому обращаешься, после символа "?" перечисляются переменные и их значения (после сивола "="). можно передавать несколько переменных сразу. Для этого, необходимо их отделить друг от друга символом "&".
Наример, ссылка
<a href="index.php?page=news&id=12">news</a>
будет передавать в файл index.php переменную "page" со значением "news" и переменную "id" со значением "12". Значение переменных доступны в массиве $_GET:
$_GET['news'], $_GET['id'] ...


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RussiaStudent
RussiaStudent
Topic Starter сообщение 18.12.2008, 18:27; Ответить: RussiaStudent
Сообщение #3


Оо не знал... Спасибо, что открыл мне глаза. То есть ты хочешь сказать, что переданные данные находятся в данных массивах?
Тогда чтобы мне использовать данные переданные методом POST или GET мне нужно обращаться к ним так?
$_GET['имя'] или $_POST['имя']

Просто я думал раньше, что переменные имеют тоже имя, что и при передаче из формы...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KURT [197BD]
KURT [197BD]
сообщение 18.12.2008, 18:37; Ответить: KURT [197BD]
Сообщение #4


Просто я думал раньше, что переменные имеют тоже имя, что и при передаче из формы...


это возможно, при включенной опции "register_globals=on". Но это не безопасно =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RussiaStudent
RussiaStudent
Topic Starter сообщение 18.12.2008, 18:41; Ответить: RussiaStudent
Сообщение #5


Спасибо и всё таки... Как же ещё можно передавать данные на PHP? Ведь если бы мы могли передавать данные только через формы, то PHP был бы очень примитивен. Искал в интернете по данному вопросу. Было что-то сказано про URL сайта, ещё что-то про cookies и какие-то сессии...
Вы бы не могли мне разъяснить поточнее, что каждое из этих слов значит? И лучше с маленким примерчиком для закрепления... Буду очень благодарен :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KURT [197BD]
KURT [197BD]
сообщение 18.12.2008, 18:52; Ответить: KURT [197BD]
Сообщение #6


про URL я написал выше =)
про остальное напишу попозже, если никто не опередит :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Vialls_mw
Vialls_mw
сообщение 18.12.2008, 19:55; Ответить: Vialls_mw
Сообщение #7


Cookie - это массив данных, который хранится у пользователя на компьютера (в браузере).
Что бы установить Cookies в PHP, нужно использовать функцию setcookie():
<?php
  setcookie("name", "value"); // Устанавливаем Cookie-переменную с именем name, и значением - value
?>

Что бы считать куки, нужно обратится к массиву $_COOKIE:
<?php
  if (!empty($_COOKIE["name"])) // Если переменная не пустая, то
    echo $_COOKIE["name"]; // Вывести, значение куки с именем name
?>


Сессии - это более крутой вид передачи данных, который работает примерно так-же как Cookies, но может работать с выключенными Cookies в браузере (скрыто, через GET-запросы и др., точно не знаю - не интересовался).
Что бы использовать сессии нужно их "активировать" с помощью функции session_start(), для установки значений и доступа к ним, используем массив $_SESSION:
<?php
  // Page1
  session_start();
  $_SESSION["name"] = "value";
?>

<?php
  // Page2
  session_start();
  if (!empty($_SESSION["name"]))
    echo $_SESSION["name"];
?>

Но сессии имеют небольшой минус, при зыкрытии браузера, все данные удаляются, в то время как у Cookies - нет.

Кстате, советую на php.net почитать про функцию setcookie(), там много еще дополнительных параметров, например - время автоматического удаления переменной и др.

P.S.
Опередил :)

К автору:
Сожгите свою книгу, и купите нормальную :P


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.12.2008, 20:19; Ответить: ZiTosS
Сообщение #8


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

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

У нас есть файл-передатчик(transmitter) 1.php
.............
<form method="[GET или POST]" action="2.php">
   <input type="text" name="pole1"> Текстовое поле <br>
   <input type="password" name="pole2"> Поле для ввода пароля <br>
   <input type="checkbox" name="pole3" value="[значение]"> Чекбокс(галка) <br>

   Радиокнопки
   <input type="radio" name="pole4" value="[значение 1]"> - вариант1
   <input type="radio" name="pole4" value="[значение 2]">  - вариант2
</form>
.............

И есть файл-приемник(receiver) 2.php
<?php
echo $_GET['pole1']; //выдаст значение введённое в текстовое поле
echo $_GET['pole2']; //выдаст значение введённое в поле для ввода пароля
echo $_GET['pole3']; //Если галка стоит вернёт: [значение], иначе: пустое значение ""
e[b][/b]cho $_GET['pole4']; //Вернёт значение выбранного пункта радиокнопки ([значение 1] или [значение 2])

/* С POST тоже самое */
?>

Принципиальное отличие GET и POST:

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

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

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

Метод передачи данных через URL(адресную строку)
Вот к приеру у нас есть обычная ссылка на странице
<a href="./file.php">Ссылка</a>

Нажав на которую пользователь попадёт на страницу с именем file.php.
Тогда мы можем воспользоваться всё теме методом передачи GET и сформировать список параметров сами
<a href="file.php?[имя_переменной1]=[значение1]&[имя_переменной2]=[значение2]"></a>

Тогда при переходе по данной ссылке мы можем использовать данные переменные
<?php
echo $_GET['имя_переменной1']; //Выведет [значение1]
echo $_GET['имя_переменной2']; //Выведет [значение2]
?>


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

Вот к примеру я задаю cookie(печенье в простонародии) с именем name, со значением "Vasya" на 20 секунд;
setcookie("name", "Vasya", 20);

Подробнее смотреть тут определение cookies
Теперь на какую страницу данного сайта в течении 20 секунд после зарезервирования(определения) данной cookie мы не перешли, эта переменная будет доступна
<?php
echo $_COOKIE['name']; //Выведет Vasya
?>


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

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

/* заносим значения в сессию */

$_SESSION["param1"] = [Значение_1]; // С помощью глобального массива
$_SESSION["param2"] = [Значение_2]; // С помощью глобального массива


?>


Пока вы не закроете браузер вы можете использовать данные переменные на всём сайте, на котором они были зарегистрированны
<?php
session_start(); // Объявили о том что мы будем использровать сессию

echo $_SESSION["param1"]; //Выведет [Значение_1]
echo $_SESSION["param2"]; //Выведет [Значение_2]
?>


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


И конечно же... Все перечисленные типы можно совмещать на одной странице, например... Передача данных формы+данные через URL
.............
<form method="[GET или POST]" action="2.php?id=1">
   <input type="text" name="pole1"> Текстовое поле <br>
</form>
.............

Думаю вам будет всё понятно... Если нет задавайте вопросы.


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
RussiaStudent
RussiaStudent
Topic Starter сообщение 18.12.2008, 22:46; Ответить: RussiaStudent
Сообщение #9


Оо как много информации. Спасибо большое :) Буду читать и вникать.
Возникнут вопросы обращусь...
Ещё раз огромное всем спасибо
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 19.12.2008, 3:36; Ответить: ZiTosS
Сообщение #10


Я всегда рад помочь в изучении, только вы приводите что-нибудь в пример, что у вас не получается, а мы вместе разберём ваши ошибки!
Удачи в изучении. Ждём ваших успехов и продвижения :)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6540 13.3.2024, 23:16
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3758 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Как вы сравниваете ТОП сайтов между собой?
5 noviktamw 5541 10.1.2024, 13:23
автор: wanessa
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15165 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) Сбор Данных Услуг И Специалистов Яндекс.Услуги
2 zkalinin 2345 26.5.2022, 17:10
автор: zkalinin


 



RSS Текстовая версия Сейчас: 19.3.2024, 13:31
Дизайн