Столкнулся с проблемой при написании авторизации:
Значит создаю сессию session_start();, потом создаю переменные сессии $_SESSION['name'] и $_SESSION['id'] (где id - id юзера прошедшего
аутентификацию и открывшего сессию). На следующей страницы проверяю, та ли эта сессия, и по id делаю запрос к базе данных, чтобы узнать имя юзера, статус (админ, модер).
Так вот, суть проблемы вот в чём: когда я вхожу, допустим под админом (Dima), а кто-то после меня заходит, допустим под модером, то у меня все данные меняются на его!!!
Я всю литературу перерыл и ничего не нашел! Блин не понимаю, почему они "смешиваются"?!?
register_globals = off;
Помогите пожалуйста!
Спустя 1 час, 14 минут, 12 секунд (5.03.2008 - 08:43) Leningrad00 написал(а):
Код давай.
Спустя 5 часов, 57 минут, 30 секунд (5.03.2008 - 14:41) Dmitriy_LAM написал(а):
Код страницы, где создается сессия
session_start();
session_regenerate_id();
$ses_id = session_id();
$_SESSION['name'] = 'adminka';
$_SESSION['ses'] = $ses_id;
$_SESSION['login'] = $nick;
$_SESSION['pass_md5'] = $password_md5;
$_SESSION['enter'] = $now;
$result = mysql_query("SELECT * FROM admin_sessions WHERE user = '$nick'", $db);
$res = mysql_fetch_array($result);
if(mysql_num_rows($result) > 0)
{
mysql_query("DELETE FROM admin_sessions WHERE user = '$nick'", $db);
}
mysql_query("INSERT INTO admin_sessions (user,sid,enter) values ('$nick','$ses_id','$now')");
Код принимающий:
session_start();
$ses_id = session_id();
$sid = $_SESSION['ses'];
if($_SESSION['name'] != 'adminka')
{
exit("сессия не админка");
}
$_SESSION['name'] = 'adminka';
$username = $_SESSION['login']; // login
$password = $_SESSION['pass_md5']; // pass
$enter = $_SESSION['enter'];
session_start();
session_regenerate_id();
$ses_id = session_id();
$_SESSION['name'] = 'adminka';
$_SESSION['ses'] = $ses_id;
$_SESSION['login'] = $nick;
$_SESSION['pass_md5'] = $password_md5;
$_SESSION['enter'] = $now;
$result = mysql_query("SELECT * FROM admin_sessions WHERE user = '$nick'", $db);
$res = mysql_fetch_array($result);
if(mysql_num_rows($result) > 0)
{
mysql_query("DELETE FROM admin_sessions WHERE user = '$nick'", $db);
}
mysql_query("INSERT INTO admin_sessions (user,sid,enter) values ('$nick','$ses_id','$now')");
Код принимающий:
session_start();
$ses_id = session_id();
$sid = $_SESSION['ses'];
if($_SESSION['name'] != 'adminka')
{
exit("сессия не админка");
}
$_SESSION['name'] = 'adminka';
$username = $_SESSION['login']; // login
$password = $_SESSION['pass_md5']; // pass
$enter = $_SESSION['enter'];
Спустя 5 часов, 58 минут, 33 секунды (5.03.2008 - 20:40) mazahaka написал(а):
Цитата(Dmitriy_LAM @ 5.3.2008, 11:41) [snapback]34632[/snapback]
ession_start();
$ses_id = session_id();
$sid = $_SESSION['ses'];
if($_SESSION['name'] != 'adminka')
{
exit("сессия не админка");
}
$ses_id = session_id();
$sid = $_SESSION['ses'];
if($_SESSION['name'] != 'adminka')
{
exit("сессия не админка");
}
Код
if($_SESSION['name'] == 'adminka' && $sid==$ses_id){
$_SESSION['name'] = 'adminka';
$username = $_SESSION['login']; // login
$password = $_SESSION['pass_md5']; // pass
$enter = $_SESSION['enter'];
} else {
echo "бла бла бла";
exit;
}
$_SESSION['name'] = 'adminka';
$username = $_SESSION['login']; // login
$password = $_SESSION['pass_md5']; // pass
$enter = $_SESSION['enter'];
} else {
echo "бла бла бла";
exit;
}
Спустя 1 минута, 31 секунда (5.03.2008 - 20:41) mazahaka написал(а):
при выходе удалаяй нафиг сессию
Спустя 1 год, 4 дня, 14 часов, 51 секунда (10.03.2009 - 10:42) kanapus написал(а):
Люди, ПОМОГИТЕ!!!
при отрабатывании команды session_start() IE7 всегда создает новую сессию (появляется новый идентификатор сессии). Опера отрабатывает нормально, сначала создает новую сессию, а затем уже восстанавливает. Проблема, видимо, кроется в настройках php.ini. Т.к. IE7 с другого хоста, который настроен иначе, сессию запускает, а затем воссанавливает.
вот мой php.ini
[PHP]
register_globals = Off
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
при отрабатывании команды session_start() IE7 всегда создает новую сессию (появляется новый идентификатор сессии). Опера отрабатывает нормально, сначала создает новую сессию, а затем уже восстанавливает. Проблема, видимо, кроется в настройках php.ini. Т.к. IE7 с другого хоста, который настроен иначе, сессию запускает, а затем воссанавливает.
вот мой php.ini
[PHP]
register_globals = Off
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"