[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессия не везде работает
Страницы: 1, 2
masterlelik
Есть два файла index.php
session_start();
$_SESSION["user_id"]=10;

и
users.php
session_start();
echo $_SESSION["user_id"];

В результате проверки переменная $_SESSION["user_id"] вовсе не определена.

Это если напрямую в браузере запустить файл users.php
А если через аякс со страницы index.php, то переменная имеет правильное значение.

Куда копать, чтоб и по прямому запуску users.php переменная $_SESSION["user_id"] имела значение?

P.S. локально все работает и по прямой ссылке и через аякс, а вот на рабочем сервере как описано выше.

_____________
Astin
Запуская файл index.php ты создаешь $_SESSION["user_id"]=10;

И после если открыть users.php то тебе выведит то что ты присвоил к $_SESSION["user_id"]

Но если запустить к примеру просто users.php, то естественно тебе
ничего не покажет, так как в users.php ты ничего не присваеваешь
к $_SESSION["user_id"], а только ее выводишь

Так что чтоб увидеть что находится в $_SESSION["user_id"], нужно сначала
этой $_SESSION["user_id"] что то присвоить
masterlelik
@Astin
Так и делаю, в индексе вижу все переменные в массиве SESSION, затем захожу уже в юзерс, там этот массив пустой.


_____________
Astin
masterlelik
Я фиг его знает как ты что прописываешь

Вот я для примера в index.php прописал так
<?php

session_start();

$_SESSION["user_id"] = 'masterlelik';

echo '<a target="_blank" href="users.php">Открыть users.php</a>';


А в users.php прописал вот так
<?php 

session_start();

echo '$_SESSION = '.$_SESSION["user_id"];


И все работает, вот Здесь можешь посмотреть
masterlelik
2Astin
закинул эти два файла на сервер
запустил - ок

Затем смотрю, что хранится в массиве SESSION в моем индексе и юзерс.
В index определение user_id не произошло, а в юзерс произошло, т.е. только в юзерс я увидел изменения в массиве.


_____________
Astin
Так в index ты ее создаешь а в users.php ты ее выводишь для просмотра.
Можешь просматривать и в index

Вот еще пример написал для тебя Вот Здесь
masterlelik
Цитата (Astin @ 30.05.2016 - 04:06)
Так в index ты ее создаешь а в users.php ты ее выводишь для просмотра.
Можешь просматривать и в index

Вот еще пример написал для тебя Вот Здесь

Я имел ввиду свой индекс.пхп
В твоем создаю и вижу новую переменную и в самом индекс2 и в юзерс, а в индекс1 не вижу

_____________
Astin
Как ты не видишь, вот возьми в своем индекс1 пропиши вот так
<?php

session_start();

$_SESSION["user_id"] = 10;

echo $_SESSION["user_id"];


И просто обнови страницу и увидишь свою $_SESSION["user_id"]
Astin
Цитата
В результате проверки переменная $_SESSION["user_id"] вовсе не определена.

Это если напрямую в браузере запустить файл users.php
А если через аякс со страницы index.php, то переменная имеет правильное значение.

Еще раз говорю, что при обращении к users.php в $_SESSION["user_id"] ничего не будет
так ты создаешь $_SESSION["user_id"] в index.php.
Для того чтоб увидеть в users.php что находится в $_SESSION["user_id"], нужно
запустить index.php который создает $_SESSION["user_id"].

И опять же если хочешь увидеть в index.php что находится в $_SESSION["user_id"],
нужно запустить index.php ну соответственно поставить в него вывод этой
$_SESSION["user_id"].

Код выше я тебе написал для того чтоб увидеть в index.php что находится в $_SESSION["user_id"]
Astin
Вот здесь http://phpfaq.ru/sessions можешь почитать про сессии
masterlelik
2Astin

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

_____________
Astin
Цитата
Есть конфигурационный файл который инклюдится в индексе. В котором я присваиваю и просматриваю сессионную переменную.

А вот теперь сам ответил на свой вопрос.

Ты получается создаешь $_SESSION["user_id"] в конфигурационном файле,
который подключается в индекс, Так?
Если правильно понял, тогда берешь и подключаешь конфигурационном файл в
свои индекс2, и юзерс и тогда $_SESSION["user_id"] будет видна и в них
Astin
К примеру, вот твой файл конфигурации config.php
<?php

session_start();

$_SESSION["user_id"] = 10;


//Что то еще



Вот твой index.php
<?php

include 'config.php';

echo $_SESSION["user_id"];



Вот твой index2.php
<?php

include 'config.php';

echo $_SESSION["user_id"];



Вот твой users.php
<?php

include 'config.php';

echo $_SESSION["user_id"];



И все, теперь у тебя везде видна $_SESSION["user_id"]
_
masterlelik
2Astin
Да, спасибо, нашли причину.

Но почему в тестовом файле index2.php недостаточно просто запустить session_start();
чтоб увидеть все переменные, которые создаются в конфиге?

Ведь конфиг также начинается со строки session_start(); ?

_____________
Astin
Бля... Ты че

Цитата
Но почему в тестовом файле index2.php недостаточно просто запустить session_start();
чтоб увидеть все переменные, которые создаются в конфиге?


Потому что у тебя твой конфиг подключается в index.php и при запуске
index.php естественно создастся твоя $_SESSION["user_id"], потому что
она создается в конфиге а он подключается в index.php

Если твой конфиг не подключить к примеру в index2.php и просто запустить его,
то естественно ничего не создастся так как там ты только смотришь что находится
в $_SESSION["user_id"], а подключив в index2.php свой конфиг и запустив index2.php
ты увидешь что есть в $_SESSION["user_id"], потому что $_SESSION["user_id"]
создается в конфиге а он подключен к index2.php


А так вообще чтоб увидеть что в $_SESSION["user_id"] ее нужно сначало
создать
Ты запусти свой index.php в котором подключен конфиг, который
создает твою $_SESSION["user_id"]

А потом в index2.php пропиши
<?php 

session_start();

echo $_SESSION["user_id"];


Запусти свой index2.php и увидишь ты свою созданную ссесию

Ты получается еще не создал $_SESSION["user_id"] а уже хочешь видеть что в ней находится
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.