powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Сессия
25 сообщений из 48, страница 1 из 2
PHP: Сессия
    #38340978
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, я так и не понял как организовать сессию, что не так тут.
В mainpage.php не могу проверить значение $_SESSION['user_role']

В index.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?php
	if (!isset($_SESSION))
	{
		//session_save_path($_SERVER['DOCUMENT_ROOT'].'/session');
		session_save_path(dirname(__FILE__)."/session");
		ini_set('display_errors',1);
		error_reporting(E_ALL);
		ini_set("session.use_cookies", 0);
		ini_set("session.use_trans_sid", 1);
		//ini_set("register_globals", "On");
		//ini_set("session.cache_limiter", "private");
		//session_name("session123");
		//var_dump(session_start());
		session_start();
		//session_register('user_login');
		$_SESSION['user_login'] = "USR";
	}    

	header("Location: /mainpage.php");
?>


**********************************************
В mainpage.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
    session_start();
	.................
	.................
	if ($_SESSION['user_role'] == "USR")
	{
		.................
		.................
	}
	else
	{
		.................
		.................
	}
?>
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341016
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$_SESSION всегда существует
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341121
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett$_SESSION всегда существует

Это вопрос или утверждение?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341147
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще это было утверждение, но оно не верное. Если не делать старт сессии то супер массива нет.

А вообще, найдите 5 отличий
Код: php
1.
$_SESSION['user_login'] = "USR";



Код: php
1.
if ($_SESSION['user_role'] == "USR")
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341170
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно $_SESSION['user_role'], здесь чуть ошибся.
Но у меня все правильно.

session_start(); в обоих файлах не старт сессии, или как-то по другому надо?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341173
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?php
	if (!isset($_SESSION))
	{
		//session_save_path($_SERVER['DOCUMENT_ROOT'].'/session');
		session_save_path(dirname(__FILE__)."/session"); //путь верно указан? Каталог доступен для записи?
		ini_set('display_errors',1);
		error_reporting(E_ALL);
		ini_set("session.use_cookies", 0);
		ini_set("session.use_trans_sid", 1);
		//ini_set("register_globals", "On");
		//ini_set("session.cache_limiter", "private");
		//session_name("session123");
		//var_dump(session_start());
		var_dump(session_start(););
		//session_register('user_login');
		$_SESSION['user_login'] = "USR";
	}    

	header("Location: /mainpage.php");
?>
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341176
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
var_dump(session_start()); - двоеточие там лишнее, я опечатался.
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341194
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, путь доступен.
Но иногда создается сразу несколько файлов сессии типа этого sess_rjafmoj3vpv9tpv808trmih7h7, с разными идами, а иногда один файл.
Я так понимаю, что должен быть один файл. Правильно?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341220
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
Для того, чтобы иметь доступ к переменным сессии на любых страницах сайта, надо написать ТОЛЬКО ОДНУ(!) строчку в самом начале КАЖДОГО файла, в котором нам нужны сессии:
session_start();
И далее обращаться к элементам массива $_SESSION. Например, проверка авторизации будет выглядеть примерно так:
session_start();
if ($_SESSION['authorized']<>1) {
header("Location: /auth.php");
exit;
}



Тыц
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341352
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял в одном случае вы изменяете путь к сессиям, а в другом он ищет их по дефолтному адресу и естественно не находит...
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341577
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett Как я понял в одном случае вы изменяете путь к сессиям, а в другом он ищет их по дефолтному адресу и естественно не находит...

Что-то подобно и происходит.
Перед каждым session_start(); надо указывать путь к сессиям session_save_path(dirname(__FILE__)."/session");?
Например, вот так будет правильно?

session_save_path(dirname(__FILE__)."/session");
session_start();
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341626
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mike222Hett Как я понял в одном случае вы изменяете путь к сессиям, а в другом он ищет их по дефолтному адресу и естественно не находит...

Что-то подобно и происходит.
Перед каждым session_start(); надо указывать путь к сессиям session_save_path(dirname(__FILE__)."/session");?
Например, вот так будет правильно?

session_save_path(dirname(__FILE__)."/session");
session_start();А чем дофолтный путь сессий обидел?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341627
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike222,

А зачем указывать этот путь?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341662
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сами себе проблемы ищут)
...
Рейтинг: 0 / 0
PHP: Сессия
    #38341796
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Тут очевидно дело обычное. Автор где-то нарыл кусок кода и приспособил к себе. Теперь как скульптор будет отсекать лишнее пока одна строка не останется. :)
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344194
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обнаружил, что сессия не работает, т.е. не присваивает переменным значения только в Mozilla, а в остальных (Safari, Opera, Chrome, IE) все нормально.
Подскажите в чем может быть дело и как исправить?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344570
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike222,

В смысле строка

session_save_path(dirname(__FILE__)."/session")

меняет путь к кукям у клиента?

Я может чего-то не понимаю, но схема примерно такова: на сервере лежит дамп переменной в файле к которому вы можете обращаться в течении определенного времени из разных скриптов. При обращении дамп обращается в переменные, возвращается в память, короче. У клиента лежит печенька (cockie) в которой, допустим, записан идентификатор сессии, по которому вы можете получить связанные с юзером переменные в записи сессии и значения.

Если у клиента отключены куки или стоит еще какое плугоПО которое запрещает их юзать по некоторым признакам - вы не сможете идентифицировать клиента и следовательно не получите ничего полезного из записей сессии.

Ну, или типа того. В мануале про сессии все расписано.
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344575
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для скрипта - сервер это локаль. Оффлайн. В оффлайне такие методы применяются с восхода компов. Файл это дамп куска памяти а первые файлы были в виде продырявленных картонных карточек. Любительские приложения юзают обмен данными через файлы напропалую. $_SESSION такой же файл как и любые другие и все что вам нужно это отождествить юзера по какому-то признаку. Если бы каждый комп имел IP адрес независимо от места включения в сеть, то есть если бы каждый комп был сервером - этим признаком был бы ойпи. Пока что приходится писать клиенту в куки некий ключ по которому он впоследствии и отождествляется.
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344756
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

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

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

айпи для того и существует, что в отличии от макадреса - он как бы идентифицирует точку подключения.

АНАЛОГ
легко работать почте если писать кому ты пишешь письмо, а не где человек находиться?

тоесть вместо москва, ул. ленина 25 кв 145 - писать - гошику сидоровичу попугайло, 1977г р.(серия паспорта и кем выдан)

:):):)

да на конвертах ты пишешь имя человека, чтобы в одной квартире люди уже знали кому именно.

дык и мак адреса - универсальные, аналогично юзаються на последнем узле перед твоей машиной. (свич роутер или что там за барахло стоит)
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344783
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

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

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

тоесть впринципе, ты можешь одновремено 1000 подключений вести к одному сайту и будет 1000 разных сесий раз тебе такое надо (ну скажем спамить форумы, или проводить анализ(тестирование) работы сайта)



ЗЫ мы же все понимаем чем примари кей независящий ни от чего(автоинкремент, юник_айди....) лучше , чем скажем серия паспорта(что впринципе тоже уникальна) или другие данные которые по своей природе уникальны.

-основные выгоды, что можно абстрагировать работу связей от данных(скажем везде примари это число интежер -а не по ситуации, где варчар, где интежер, где бинари , где ещо какая охинея)

-в будущем, при расширении функционала, или изменении архитектуры, то что было уникальным, может потерять это свойство.
ПРИМЕР - серияномер паспорта в таблице паспорта - вышел закон, серияномер национального и международного паспорта должны совпадать :) и крантец примари кею ввиде серииномера
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344785
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Mike222
Код: php
1.
		ini_set("session.use_cookies", 0);


Зачем-то запретили использовать куки
...
Рейтинг: 0 / 0
PHP: Сессия
    #38344991
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почистил куки и стал присваивает переменным значения.
Но теперь другая проблема - отваливается сессия.
Что посоветуете проверить?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38345464
Electric200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike222,

Выложите куда то ваши исходные файлы кода и дайте ссылку.
...
Рейтинг: 0 / 0
PHP: Сессия
    #38345733
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как понять "отваливается"?
...
Рейтинг: 0 / 0
PHP: Сессия
    #38346216
Mike222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создается файл сессии sess_ho1n8vg3fos43gli54c2lnno16 с таким содержанием:
session_id|s:26:"ho1n8vg3fos43gli54c2lnno16";session_name|s:9:"mike222";
user_login|s:5:"admin";user_role|s:3:"adm";ip|s:9:"127.0.0.1";

Но при переходе обратно по header("Location: /index.php") (может не так надо сделать возврат)
что-то происходит не так или в index.php у меня что-то не то написано, т.е. на странице
index.php значение var_dump($_SESSION) пусто, хотя на диске имеется файл сессии с переменными
и правильными их значениями.

Фаил index.php
Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
	error_reporting(E_ALL);
	if (isset($_REQUEST[session_name()]))
	{
		session_start();
	}
?>


Фаил admin.php
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<form id="autorize_frm" enctype="multipart/form-data" action="autorize.php" method="post">
	<h1>Авторизация</h1>
	<label class="label">Логин:</label>
	<input class="input_field" type="text" maxlength="20" name="user_name" placeholder="Ваш логин" value="" />
	<label class="label">Пароль:</label>
	<input class="input_field" type="password" maxlength="20" name="password" placeholder="Ваш пароль" value="" />
	<input id="enter" type="submit" name="login" value="Войти" />
    <input id="register" type="submit" name="register" value="Регистрация" />
</form>


Фаил autorize.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<?php
    if (!isset($_SESSION))
    {
        ini_set("display_errors", 1);
        error_reporting(E_ALL);
        ini_set("session.use_cookies", 0);
        //ini_set("session.use_only_cookies", 1);
        ini_set("session.use_trans_sid", 1);
        ini_set("session.save_handler", "files");
        //ini_set("session.save_handler", "user");
        //ini_set("register_globals", "On");

        ini_set("session.name", "mike222");

        ini_set("session.cache_limiter", "private");
        //ini_set("session.cache_limiter", "public");

        ini_set('session.cookie_lifetime', '2000');
        ini_set("session.gc_maxlifetime", "1800");
        ini_set("session.gc_probability", 10);

        ini_set("session.cookie_path", $_SERVER['DOCUMENT_ROOT'] . "/session");
        ini_set("session.save_path", $_SERVER['DOCUMENT_ROOT'] . "/session");

        session_start();
    }

    if (isset($_POST['login']))
    {
        $user_login = strip_tags(htmlspecialchars($user_name));
        $userpass = strip_tags(htmlspecialchars($password));
        $userpass = md5($userpass); 
		.............................
		.............................
		.............................

		include_once("../admin/classes/class_database.php");
		$objdatabase = new database();
		$objdatabase->sqluserlogin($user_login);
		
        if ($userpass != $user_pass)
        {
			.............................
			.............................
			.............................
			exit();
        }
        else
        {
			$_SESSION['session_id'] = session_id();
            $_SESSION['session_name'] = session_name();
            $_SESSION['user_login'] = $user_login;
            $_SESSION['user_role'] = $user_role;
            $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
        }
    }

	header("Location: /index.php");
    exit();
?>
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Сессия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]