Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача массивов
 
 автор: Force_Majeure   (07.02.2006 в 11:19)   письмо автору
 
 

Подскажите новичку: как передать массив из одного php в другой?
Пробовал так

<input type=hidden name=Array[]>

но тогда он передает пустой массив, а мне нужно со значениями.
Моэно еще, конечно, складывать элементы массив в строку и передавать как переменную, но это не кажется правильным.

   
 
 автор: P@Sol   (07.02.2006 в 11:53)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 11:19)
 

Функция implode — Объединяет элементы массива в строку, а explode — разбивает.

   
 
 автор: Force_Majeure   (07.02.2006 в 12:53)   письмо автору
 
   для: P@Sol   (07.02.2006 в 11:53)
 

Не хочется так делать т.к. тогда при просмотре HTML будут видны значения передаваемого массива, а этого хотелось бы избежать.

   
 
 автор: Trianon   (07.02.2006 в 13:25)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 12:53)
 

а в $_SESSION[] этот массив нельзя оставить?

   
 
 автор: Force_Majeure   (07.02.2006 в 13:48)   письмо автору
 
   для: Trianon   (07.02.2006 в 13:25)
 

Разъясни, плz, я не совсем понял по манам, как session работает.

   
 
 автор: cheops   (07.02.2006 в 14:12)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 13:48)
 

Очень просто, в начале каждого скрипта где работаете с сессией помещаете фукнцию
<?php
  session_start
();
?>

после этого вы можете поместить в сессию переменные или массивы в суперглобальный массив $_SESSION
<?php
  $arr 
= array(1,2,3,4,5);
  
$val "строка";
  
$_SESSION['val'] = $val;
  
$_SESSION['arr'] = $arr;
?>

После этого, в любом другом файле, после объявления session_start() вы можете обратится к любой переменной, ранее помещённой в суперглобальный массив
<?php
  
echo $_SESSION['val']."<br>";
  echo 
$_SESSION['arr'][0]."<br>";
?>

   
 
 автор: Force_Majeure   (07.02.2006 в 14:46)   письмо автору
 
   для: cheops   (07.02.2006 в 14:12)
 

А это будет работать, если register_globals стоит в off ?

   
 
 автор: cheops   (07.02.2006 в 14:05)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 11:19)
 

нет нужны значения, т.е. примерно так
<input type=hidden name= аrr[1] value='значени_1'>
<input type=hidden name= аrr[2] value='значени_2'>
<input type=hidden name= аrr[3] value='значени_3'>

Тогда в обработчике можно будет обращаться к двумерному массиву, т.е. вывести значения можно будет примерно так
<?php
  
echo $_POST['arr'][1]."<br>";
  echo 
$_POST['arr'][2]."<br>";
  echo 
$_POST['arr'][3]."<br>";
?>

   
 
 автор: ora   (07.02.2006 в 14:13)   письмо автору
 
   для: cheops   (07.02.2006 в 14:05)
 

А у меня эхо сообщает пустоту, а должно вывести 'значени_1'.
Че у меня не так ?

   
 
 автор: Force_Majeure   (07.02.2006 в 14:39)   письмо автору
 
   для: cheops   (07.02.2006 в 14:05)
 

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

   
 
 автор: cheops   (07.02.2006 в 14:47)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 14:39)
 

Тогда волей не волей придётся использовать сессии, как это описывается четырьмя постами выше.

   
 
 автор: Force_Majeure   (07.02.2006 в 16:25)   письмо автору
 
   для: cheops   (07.02.2006 в 14:47)
 

А в какой момент, если использовать сессии, нужно делать unset и destroy_session()?
Если я вызываю их сразу после получения переданных массивов, а потом нажимаю "обновить" в браузере, что вполне возможно для модемщиков, сессия уже уничтожена и получить данные не получается.

   
 
 автор: Trianon   (07.02.2006 в 16:35)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 16:25)
 

Уничтожать сессию нужно обычно тогда, когда пользователь нажимает на ссылку "Завершить сеанс" (или Выход, как в этом форуме, и т.п.)

По-моему, лучше будет уничтожать не всю сессию, а только свою отдельную переменную сессионном массиве ( $_SESSION['my_var'] ) . Мало ли какие скрипты потом захочется положить рядом с имеющимся... это не повод гробить и свои сессионные данные и чужие.

   
 
 автор: cheops   (08.02.2006 в 02:31)   письмо автору
 
   для: Force_Majeure   (07.02.2006 в 16:25)
 

Вы можете об этом не заботится сессия автоматически будет уничтожена, после закрытия окна браузера.

   
 
 автор: Trianon   (08.02.2006 в 10:25)   письмо автору
 
   для: cheops   (08.02.2006 в 02:31)
 

Как это автоматически? Разве браузер при закрытии окна хоть что-то отправляет серверу?
Мне всегда казалось, что будет уничтожен лишь клиентский сессионный кукис.
Да и то не всегда.
Вот 5 минут назад я сел за комп, загрузил windows и открыл в браузере softtime.ru/forum.
Никаких логинов и паролей я не вводил. А форум со мной поздоровался по нику. И даже дал эту реплику отправить.
И как это согласуется с уничтожением сессий?

   
 
 автор: Loki   (08.02.2006 в 12:18)   письмо автору
 
   для: Trianon   (08.02.2006 в 10:25)
 

так логин и пароль храняться в обычных куках, а не сессионных.
Но вообще вы правы - на сервере сессия еще проживет некоторое время.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования