| |
|
|
| | Помогите пожалуйста с проблемой. Я тестирую сайты созданные мной по Денвером (локально). Но при очистке папки HOME от лишних директорий и после удаления одной из баз данных перестали передаваться переменные сессии $_SESSION["id"].
Все работает а $_SESSION[] не передаются.
Что я мог снести? | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 07:22)
| | | Папки home и базы данных к сессии отношения не имеют. Сессии Денвер (по умолчанию) пишет в папку tmp, которая лежит в корне папке сервера. Все настройки касаемые сессии неходятся в файле php.ini. | |
| |
|
|
| |
|
|
| |
для: sim5
(24.06.2007 в 07:40)
| | | А какой параметр в этом файле может повлиять на данные переменные? Я же ничего не менял в настройках. Только была снесена вся БД по неосторожности, вместо всех таблиц в БД кроме одной. После этого все и началось. | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 07:50)
| | | Ну трудно предположить, но... Зайдите в папку tmp и удалите все записи сессий, которые там есть. Сессия ваше стартуется в каком-то вашем скрипте, например index.php. Запускайте свой скрипт, и посмотрите - создана ли при этом сессия в папке tmp. Если сессия создана, значит сами сессии работают. А что касается непосредственно какой-то переменной сессии, то я не знаю откуда вы непосредственно берете, если она у вас хранилась в БД, то после сноса таблицы вы ее и не видите, НО... У вас же скрипт в таком случае, при обращении к несуществующей таблице работать не будет, вы ведь должны в этом случае получить сообщение об ошибке? | |
| |
|
|
| |
|
|
| |
для: sim5
(24.06.2007 в 07:58)
| | | Файлы сессий создаются, но я так понимаю в них ничего не пишется. я использую только переменные $_SESSION[] и ничего в базе не храню. Я уже начисто снес Денвер и установил новый, но проблема осталась.
От чего так вдруг перестали сохраняться переменные не пойму.
С БД все работает корректно. Все таблицы видны из скриптов и запросы выполняются корректно.
Что делать, ума не приложу. | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 11:37)
| | | сессию начинаете?
или вы после удаления папок не изменяли код? | |
| |
|
|
| |
|
|
| |
для: bronenos
(24.06.2007 в 11:40)
| | | все файлы учавствующие в авторизации юзера используют начальную проверку авторизации
error_reporting(E_ALL & ~E_NOTICE);
require_once("func_mysql_connect.php"); //тут если что выводится ошибка об невозможности связи с БД
session_start();
$user=$_SESSION["user"];
|
другого я ничего не менял. Просто вдруг прекратилась передача переменных между откряваемыми файлами. | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 11:49)
| | | А $_SESSION["user"] хоть равна чему либо? Проверьте
$_SESSION["user"]="SET";
echo $_SESSION["user"]; | |
| |
|
|
| |
|
|
| |
для: sim5
(24.06.2007 в 12:10)
| | | проверил - переменная не установлена говорит.
функция isset($_SESSION["user"] )=ложь | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 16:28)
| | | Если вы хотите записать в сессию, то просто пишите:
$_SESSION["user"] = что вам надо.
Проверить надо запись, значит пишите if (isset($_SESSION["user"] )) ваши действия.
Если у вас Денвер по умолчанию, если вы ничего не меняли в настройках, то:
$_SESSION["user"]="ПРОВЕРКА";
echo $_SESSION["user"];
Выведет вам ПРОВЕРКА. Вы это проверяли? | |
| |
|
|
| |
|
|
| |
для: sim5
(24.06.2007 в 16:57)
| | | ну естественно проверял. А как же я тогда узнал, что переменная теряется?
Делал все тоже самое что вы и написали.
А еще вопрос, Денвер не оставляет свои файлы еще где-нибудь, кроме как в папке Webservers?
В принципе, после сноса папки webservers с дистрибутивом Денвера все должно вылечиться.
А настройки эксплоэра на хранение переменных не может влиять? | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 18:09)
| | | Папка Webservers - папка установки Денвера по умолчанию, а путь сессий по умолчанию в php.ini /tmp, то есть сессии хранятся в папке Webservers/tmp и нигде более. Браузер к этому отношения не имеет.
Если вы Делал все тоже самое, но нет вывода на экран, и при этом Денвер и php.ini не подвергались экзекуции, то я не знаю что вам и сказать. Единственной проблемой со сессиями у меня было то, что сессия создавалась ТОЛЬКО ОДНА за все время сеанса работы Денвера. Причиной была ХР. Если вы запускаете отдельный файл, например, test.php, в котором содержится только:
<?
session_start();
$_SESSION["user"]="TEST";
echo $_SESSION["user"];
?>
|
например, и у вас браузер покажет TEST, то причина не в сессиях как таковых, а в том, что вы не верно с ними работаете, другими словами у вас ошибки в коде. Если же браузер не выведет TEST, то причины надо искать в системе, какие - сама ОС, софт, настройки..., даже и трудно предположить. По крайней мере, мне подобного видеть не приходилось. | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 07:22)
| | | А не может быть у вас session_start после отправки заголовков? У вас стоит хороший error_reporting, но для того чтобы точно увидеть все ошибки, нужно ещё, на всякий случай, написать
ini_set("display_errors",true);
Перенесите session_start в самое начало --- так надёжнее (после error_reporting и ini_set)
Да, и вы уверены, что попытка session_start после отправки заголовков --- это не notice? Может уберёте &~E_NOTICE, на всякий случай. | |
| |
|
|
| |
|
|
| |
для: Osipov
(24.06.2007 в 16:51)
| | | Тестирование кода указанного ниже и помещенного в файл test3.php привело к выводу слова TEST. Файл сессии в папке TEMP создался и в нем появилась запись user|s:4:"TEST";
<?
session_start();
$_SESSION["user"]="TEST";
echo $_SESSION["user"];
?>
|
Далее я довел ситуацию до моего случая я сделал файл test3.php с кодом
<?
session_start();
$_SESSION["user"]="TEST";
if(isset($_SESSION["user"])){ header("location: test7.php");}
?>
|
соответственно файл test7.php с кодом
<?
session_start();
$k=$_SESSION["user"];
echo $k;
?>
|
После запуска файла test3.php вывелось сообщение:
Notice: Undefined index: user in z:\home\osdnsk_ru\www\test7.php on line 3
А созданный файл сессии пуст. | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 19:11)
| | | У меня все работает, естественно и ваши тесты не вызовут осложнений. Значит у вас что-то с настройками, либо проблемы с самим пакетом Денвера. | |
| |
|
|
| |
|
|
| |
для: sim5
(24.06.2007 в 19:40)
| | | Спасибо всем за помощь! Буду искать где ошибка, работать же как-то надо ;-((( | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 19:45)
| | | В общем нашел я в чем дело было...
Все оказалось очень просто.
Я придерживаюсь следующего правила - если ошибка появилась после каких-либо изменений, то нужно вернуть все в такой вид, который был до изменений.
У меня все сайты лежали в папках типа home/rtv.ru/www/..... и все работало.
Но у меня часто возникали проблемы при проверке выгруженного сайта в интернете при включенном виртуальном сервере. Т.е. и в интернете адрес сайта www.rtv.ru и на локальном сервере тоже самое www.rtv.ru. Для того чтобы не путаться я и переименовал локальные адреса сайтов в вид www.rtv_ru и после этого начались проблемы.
Я во-первых переустановил Денвер еще раз, но не на прежнюю букву виртуального диска Z:\ как раньше было, а под новую K:\ чтобы если остались файлы от старого денвера с настройками, то они бы не мешали новому Денверу. Потом проверил вышеуказанный код из двух PHP файлов test3.php и test7.php и все заработало.
Потом я проверил свой сайт сначала с именем домена www.rtv_ru и тест перестал работать, после переименования на www.rtv.ru тест корректно отработал.
Так что вот такие глюки затормозили мою работу на 1,5 дня.
Информация эта для всех тех, кто возможно сталкивался с такой проблемой и для всех тех, кто учится на чужих ошибках и не совершает их повторно.
Всем удачи!!! | |
| |
|
|
| |
|
|
| |
для: Alex Boxgorn
(24.06.2007 в 21:30)
| | | Переименовывать каталоги денвера действительно весьма рискованная процедура.
Для того чтобы не путаться, можно применить следующий способ.
один из доменов (site.ru и www.site.ru) пустить под денвер, а другой - под реальный сайт.
В этом случае, браузеру будут видны оба варианта. | |
| |
|
|