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

Форум PHP

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

 

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

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

тема: PHP Notice: Undefined index: access
 
 автор: parczynski   (23.08.2007 в 19:47)   письмо автору
 
 

Извеняюсь, если подобная тема уже была, но я вроде как не нашел. В общем дело такое:
в index.php у меня написано

<?php
    session_start
();
    echo 
$_SESSION['access'];
    
$_SESSION['access']='dfdfdfdf';
?>

При обновлении страницы вместо dfdfdfdf появляется надпись

PHP Notice: Undefined index: access in C:\Program Files\KillSoft\NetView\Scripts\HTTP\DefaultHost\index.php on line 3

И еще интересный момент:
в куках вешается ид сессии, так вот в опере когда я просматриваю список переменных от 127.0.0.1 написано следующее:

:Program Filesphp-5.2.0-Win32tmp PHPSESSID: mp3blnbu8a84akgue7dnqq0c51

Хотя когда я выбираю эту переменную и нажимаю изменить там в поле имя написано PHPSESSID
Короче что сделать чтоб сессии заработали?

   
 
 автор: ZeeG   (23.08.2007 в 19:50)   письмо автору
 
   для: parczynski   (23.08.2007 в 19:47)
 

<?php
session_start();

$_SESSION['access']='dfdfdfdf'; - Вы ее объявили

echo $_SESSION['access']; а теперь и вывод делать можно
?>

   
 
 автор: sim5   (23.08.2007 в 19:50)   письмо автору
 
   для: parczynski   (23.08.2007 в 19:47)
 


<?php 
    session_start
(); 
    
$_SESSION['access']='dfdfdfdf';    
    echo 
$_SESSION['access']; 
?>

   
 
 автор: pina   (23.08.2007 в 20:37)   письмо автору
 
   для: sim5   (23.08.2007 в 19:50)
 

>

><?php 
>    session_start(); 
>    
$_SESSION['access']='dfdfdfdf';    
>    echo 
$_SESSION['access']; 
>
?>
>


Смысл??? Такого кода???

То же самое, что и у вас:

<?php
$some_var
='lalalala';
echo 
$some_var;
?>


ТО же самое!

На счет темы для торжества (1 пост) у меня все работает на Опере 9.21 и такая же записть PHPSESSID(id сессии) в куках

   
 
 автор: sim5   (23.08.2007 в 20:43)   письмо автору
 
   для: pina   (23.08.2007 в 20:37)
 

$some_var='lalalala' это нечто другое, чем $_SESSION['access']='lalalala'.

   
 
 автор: pina   (23.08.2007 в 20:55)   письмо автору
 
   для: sim5   (23.08.2007 в 20:43)
 

Чисто гипотетически подумай в чем разница моего и твоего примера?

   
 
 автор: pina   (23.08.2007 в 20:58)   письмо автору
 
   для: pina   (23.08.2007 в 20:55)
 

У parczynski в принципе все правильно, кроме первого раза когда будет грузиться страница а потом все тип топ.

parczynski поставь нормальный веб-сервер

   
 
 автор: Ralph   (23.08.2007 в 23:12)   письмо автору
 
   для: pina   (23.08.2007 в 20:58)
 

Брат,ты не прав,ребята правильный код написали :)
Кстати,в PHP6 появился новый метод передачи данных:
<?php
$_FUCKED
['a']='hello';
echo 
$_FUCKED['a'];
?>

P.S.Хотя по идее и в PHP4 должен работать :)))

   
 
 автор: sim5   (23.08.2007 в 21:02)   письмо автору
 
   для: pina   (23.08.2007 в 20:55)
 

Даже как-то и думать не хочется не гипотетически, не по другому - это разные вещи.

   
 
 автор: ssdmt   (23.08.2007 в 22:35)   письмо автору
 
   для: parczynski   (23.08.2007 в 19:47)
 

session_set_cookie_params (PHP 4, PHP 5)

session_set_cookie_params -- Set the session cookie parameters
Description:
void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]] )


Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script. Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.

посмотри может быть это то?

   
 
 автор: parczynski   (23.08.2007 в 23:01)   письмо автору
 
   для: ssdmt   (23.08.2007 в 22:35)
 

ZeeG, sim5 и pina, хотя pina вороде понял(а) (извняюсь не знаю как обратиться) у меня в коде все правильно так и должно быть сначала вывод, потом объявление, я это писал чтобы просто проверить работают сессии или нет. если написать

$_SESSION['access']='dfdfdfdf'; - Вы ее объявили

echo $_SESSION['access']; а теперь и вывод делать можно

или что в данном контексте то же самое

$some_var='lalalala'; 
echo $some_var;

то ясен пень что все работать будет, но если сессии работают, то у меня во время второй загрузки странице должна появиться надпись dfdfdfdf, а этого не происходит.
сервер у меня стоит нормальный, не проффисиональный, но для тестирования скриптов то что надо. раньше у меня все работало, но потом переустановил windows и php поменял с 4.3 на 5.2.0
и session_set_cookie_params я тоже раньше не пользовался, а работало.

   
 
 автор: parczynski   (23.08.2007 в 23:38)   письмо автору
 
   для: parczynski   (23.08.2007 в 23:01)
 

Хорошо, объясню на пальцах:
скрипт вызывается первый раз
1) session_start(); инициализируется сессия, пользователю отправляется кука с ID сессии.
2) echo $_SESSION['access']; пользователю отправляется содержимое переменной $_SESSION['access'], но так как такой переменной нет, но ничего не выводится.
3) $_SESSION['access']="dfdfdfdf"; переменной $_SESSION['access'] присваевается значение dfdfdfdf;
4)скрипт заканчивает работу, все переменные сессии сохраняются в файле.
скрипт выполняется второй раз
1) session_start(); инициализируется сессия, так как в принятых от браузера куках уже был ИД, и на сервере существует файл соответствующий этому ид, то переменные сессии читаются из файла.
2) echo $_SESSION['access']; так как при прошлом вызове значение этой переменной было установлено, и сохранено в файле, а теперь прочитано из этого файла, то пользователю выводится "dfdfdfdf".
3) $_SESSION['access']="dfdfdfdf"; переменной снова задается значение "dfdfdfdf", но так какпеременная уже имеет это значение, то эта строка теперь роли не играет.
ЧТО ТУТ НЕ ПОНЯТНО??? ВСЕ НАПИСАНО ПРАВИЛЬНО И ДОЛЖНО РАБОТАТЬ.
у меня лично не работает пункт 2 из второго вызова скрипта. может быть что-то не так с настройками, может еще чего. КТО ЗНАЕТ ПОЖАЛУЙСТА ПОМОГИТЕ.

   
 
 автор: Ralph   (23.08.2007 в 23:54)   письмо автору
 
   для: parczynski   (23.08.2007 в 23:38)
 

1) session_start(); инициализируется сессия, так как в принятых от браузера куках уже был ИД, и на сервере существует файл соответствующий этому ид, то переменные сессии читаются из файла.

А вы твердо уверены в обеих утверждениях,проверяли ли вы их,или может,вы просто думаете,что так должно быть... ?

   
 
 автор: parczynski   (24.08.2007 в 01:35)   письмо автору
 
   для: Ralph   (23.08.2007 в 23:54)
 

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

<?php
    session_start
();
    echo 
$_SESSION['access'];
    echo 
session_id();
    
$_SESSION['access']='dfdfdfdf';
?>

ИД сессии все время разный :(. ЧТО ДЕЛАТЬ?

   
 
 автор: sim5   (24.08.2007 в 08:40)   письмо автору
 
   для: parczynski   (24.08.2007 в 01:35)
 

Как гласит мануал (руководство по эксплуатации РНР:)) - session_start() создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку). Если постоянно новый ID, значит передыдущая сессия "приказала долго жить".) Может это глюк вашего сервера после переустановки - у меня был глюк (в Денвере), когда сессия создавалась один раз с первым запуском браузера, а все вновь открытые копии браузера получали ее, новых не создавалось. Но этот глюк был связан с Windows XP SP1.

   
 
 автор: pina   (24.08.2007 в 10:14)   письмо автору
 
   для: parczynski   (24.08.2007 в 01:35)
 


<?php 
session_start
();
if (!isset(
$_SESSION['access'])) {$_SESSION['access']='lalalala';}
print 
$_SESSION['access']."<br>".session_id();
?>

   
 
 автор: parczynski   (24.08.2007 в 19:21)   письмо автору
 
   для: pina   (24.08.2007 в 10:14)
 

pina? а какой смысл вашего кода? я и так знаю, что переменной не существует, иначе не выводилось бы собщение о том что не существует индекс access.
Еще раз повторяю я не пишу сайт на котором тупо выводится lalalala, этот скрипт ДЛЯ ПРОВЕРКИ СЕССИЙ!!!!!!!!! С КОДОМ ВСЕ В ПОРЯДЕ!!!
У меня SP2 сервер как я уже говорил простенький, совсем не апач, поэтому и не капризный совершенно, раньше при тех же настройках все работало, к тому же заголовок страницы, в котором передаются куки формируется еще на уровне php

   
 
 автор: sim5   (24.08.2007 в 19:48)   письмо автору
 
   для: parczynski   (24.08.2007 в 19:21)
 

А если вернуться назад к РНР4 - работает? Может ваш простенький сервер по каким-то причинам "не дружит" с РНР5.

   
 
 автор: parczynski   (25.08.2007 в 02:53)   письмо автору
 
   для: parczynski   (23.08.2007 в 19:47)
 

фуф... заколдовал php.ini. теперь все работает. всем спасибо, тема закрыта

   
Rambler's Top100
вверх

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