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

Форум PHP

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

 

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

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

тема: Решил освоить сессии
 
 автор: tuder   (01.02.2007 в 21:38)   письмо автору
 
 

Работаю с Денвером (PHP/4.4.2). Пытаюсь понять механизм работы сессий и их куков.

В тестовом примере:

<?php  session_start();  ?>
<html>
<?php
$olegs
[]="1";
$olegs[]="2";
$olegs[]="3";
$olegs[]="4";
$olegs[]="5";
$trash="FG116W1P|РАДИОБУДИЛЬНИК PHILIPS AJ-3470|1220|0506";
session_register("olegs""trash");
?>
</html>


если сессии ещё нет - выдаётся сообщение

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


Но в "куку" sess_8d8c05f976c428ff7e9fa97c9ee9f010 - записывается и маасив и переменная:


olegs|a:5:{i:0;s:1:"1";i:1;s:1:"2";i:2;s:1:"3";i:3;s:1:"4";i:4;s:1:"5";}trash|s:49:"FG116W1P|РАДИОБУДИЛЬНИК PHILIPS AJ-3470|1220|0506";


Теперь беру реальный пример, для чего мне это понадобилось. Сессия всегда стартуется.

Пытаюсь с ней работать.


      if (session_is_registered("trash")) {
         $trash=$_SESSION['trash'];
         session_unregister("trash");
      }
      $trash=$code."|".$towarname."|".$summa."|".$sub;
      echo $trash;
      session_register('trash');

На "echo $trash" выдаётся: FG116W1P|РАДИОБУДИЛЬНИК PHILIPS AJ-3470|1220|0506
Создаётся sess_d38dea606ba207c4e9c26e68b43770f3
Но в ней всего лишь:

trash|N;


Переменная создаётся, в сессию вроде заносится, но где её значение?

И что за Warning выдаётся?

   
 
 автор: Boss   (01.02.2007 в 22:15)   письмо автору
 
   для: tuder   (01.02.2007 в 21:38)
 

Попробуй таким образом:


<?php
session_start
();
$_SESSION['name'] = "User"

echo 
$_SESSION['name'];
?>


Не нужно вызываеть функцию session_register() при прямом использовании $_SESSION.

   
 
 автор: tuder   (01.02.2007 в 22:40)   письмо автору
 
   для: Boss   (01.02.2007 в 22:15)
 

}{м. Работает.


      $trash=$code."|".$towarname."|".$summa."|".$sub;
      echo $trash;
      $_SESSION['trash']=$trash;

trash|s:53:"YH0TC9Y1|РАДИОПРИЕМНИК HYUNDAI H-1611 ЧЕРНЫЙ|359|0506";

Век живи, век учись. :-)

Это связано что-ли с версией php?

Кстати, $PHP_SESSION_VARS - Денвер категрически отказывается находить.

Видимо пора справочник менять.
Игорь Григин. PHP 4. 2002. Питер.

   
 
 автор: Alph[p]a   (01.02.2007 в 22:55)   письмо автору
 
   для: tuder   (01.02.2007 в 22:40)
 

не в тему но справочник Игоря Григина. PHP4 - это моя библия! Кстати вроде есть такойже токо на PHP5. Надо будет брать!
session_register работает только при включ0нном register_globals..если выключено то делать надо именно через $_SESSION['*****']. да и вроде $PHP_SESSION_VARS - это устраревшая конструкция слышал что её хотят убрать из php6 - хотя я могу ошибаться!

   
 
 автор: tuder   (01.02.2007 в 23:07)   письмо автору
 
   для: Alph[p]a   (01.02.2007 в 22:55)
 

>не в тему но справочник Игоря Григина. PHP4 - это моя библия! Кстати вроде есть такойже токо на PHP5. Надо будет брать!
Отож! У меня уже до дыр стёрт. Именно как справочник по функциям, а не как пособие по программированию. :-)
>session_register работает только при включ0нном register_globals..если выключено то делать надо именно через $_SESSION['*****']. да и вроде $PHP_SESSION_VARS - это устраревшая конструкция слышал что её хотят убрать из php6 - хотя я могу ошибаться!

Хм. В php.ini я отключил register_globals, по недавним обсуждениям. Чтобы делать без него как надо. Но для обсуждаемого сайта в .htaccess - php_flag register_globals on
Тем не менее session_register не работает.

Хм. Ээээ. А может всё с точностью до наоборот?! При php_flag register_globals on в .htaccess - в сессию занеслось с помощью $_SESSION, а вот где я тестировал, там .htaccess отсутствовал и по дефолту из php.ini бралось register_globals = Off - и работало с session_register.

   
 
 автор: Alph[p]a   (01.02.2007 в 23:26)   письмо автору
 
   для: tuder   (01.02.2007 в 23:07)
 

> У меня уже до дыр стёрт...
:))) мой ваще разваливаеться на части..в нем закладок штук с 20..))) частенько в него гляжу))) вот так запоминаешь)))
>Хм. В php.ini я отключил register_globals, по недавним обсуждениям....
Правильно сделал.
>>> session_register не работает
Оно тебе надо.?!?!.альтернатива есть...$_SESSION['***']
> Хм. Ээээ. А может всё с точностью до наоборот?!...
да вроде нет, это вычитал из PHP5 самоучитель как помню..(ну мож я туплю ночью (бывает))))
или .htaccess не работает как надо...???

   
 
 автор: Boss   (01.02.2007 в 23:57)   письмо автору
 
   для: tuder   (01.02.2007 в 23:07)
 

Если у тебя стоит старая версия PHP (ниже 4.1) то для того чтобы передавать переменные из одного сценария в другой их нужно регистрировать с помощью register_globals().

Так как у тебя стоит версия више 4.1 то НЕТ СМЫСЛА использовать register_globals(), также не стоит использовать $HTTP_SESSION_VARS.

   
Rambler's Top100
вверх

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