2013-08-21 2 views
0

В последнее время я столкнулся с проблемами с использованием области администрирования моего веб-сайта. Казалось, что проблемы с сеансом. Чтобы понять, что происходит с $_SESSION, я создал следующий скрипт:

<? 
session_start(); 
mysql_connect("localhost", "USERNAME", "PASSWORD"); 
mysql_select_db("DATABASE_NAME"); 

if (isset($_SESSION)) { 
    echo '<pre>session var:<br/>'; 
    var_dump($_SESSION); 
    $perm = mysql_fetch_assoc(mysql_query("SELECT * FROM `perm_groups` WHERE `id` = '".$_SESSION['perm']."'")); 
    echo '<br/><br/>permission var:<br/>'; 
    var_dump($perm); 
    echo '</pre>'; 
} else { 
    echo 'no session set'; 
} 
?> 

$ _SESSION [ «завивка»] должен содержать цифровую строку отсылая к идентификатору разрешения группы у меня есть («1» -> «администратор») После входа в систему я называю скрипт вручную и получить этот результат:

session var: 
array(4) { 
    ["user"]=> 
    &string(17) "sebastian.philipp" 
    ["auth"]=> 
    &bool(true) 
    ["perm"]=> 
    &string(1) "1" 
    ["llog"]=> 
    &string(19) "2013-08-21 09:48:38" 
} 


permission var: 
array(7) { 
    ["id"]=> 
    string(1) "1" 
    ["name"]=> 
    string(4) "admin" 
    ["create_pages"]=> 
    string(1) "1" 
    ["delete_pages"]=> 
    string(1) "1" 
    ["edit_pages"]=> 
    string(1) "1" 
    ["manage_users"]=> 
    string(1) "1" 
    ["manage_img"]=> 
    string(1) "1" 
} 

При обновлении страницы, нажав F5, он возвращает этот результат:

session var: 
array(4) { 
    ["user"]=> 
    &string(17) "sebastian.philipp" 
    ["auth"]=> 
    &bool(true) 
    ["perm"]=> 
    &array(7) { 
    ["id"]=> 
    string(1) "1" 
    ["name"]=> 
    string(4) "admin" 
    ["create_pages"]=> 
    string(1) "1" 
    ["delete_pages"]=> 
    string(1) "1" 
    ["edit_pages"]=> 
    string(1) "1" 
    ["manage_users"]=> 
    string(1) "1" 
    ["manage_img"]=> 
    string(1) "1" 
    } 
    ["llog"]=> 
    &string(19) "2013-08-21 09:48:38" 
} 


permission var: 
bool(false) 

И при обновлении снова, это так:

session var: 
array(4) { 
    ["user"]=> 
    &string(17) "sebastian.philipp" 
    ["auth"]=> 
    &bool(true) 
    ["perm"]=> 
    &bool(false) 
    ["llog"]=> 
    &string(19) "2013-08-21 09:48:38" 
} 


permission var: 
bool(false) 

Так semms как $perm будет записано в $_SESSION['perm'], что не должно произойти.

Что я делаю неправильно?

+0

Обычные функции mysql_ * не используют, серьезно используют функции mysqli_ * базы данных. Во-вторых, не вызывайте '$ perm = mysql_fetch_assoc (mysql_query (..))' в той же строке. Сохраните результат mysql_query с его собственной переменной, затем используйте while loop для извлечения 'mysql_fetch_assoc()'. Также нужно только запустить Login Login, добавить триггер в форму, используя 'isset ($ _SESSION)' довольно неадекватен. – MackieeE

+0

У меня не возникало проблем с этим раньше. И да, вы правы: session_start() создает сеанс var, поэтому не стоит проверять это. Я должен использовать isset ($ _ SESSION ['auth']), не так ли? – s3lph

ответ

1

Какова ваша версия PHP? Звучит так, как активируется register_globals, и этого не должно быть.

+0

Это версия 5.2.17, а 'register_globals' действительно установлена ​​в' ON'. У меня нет доступа к 'php.ini', но я могу отправить запрос хостеру, если это необходимо. Но несколько дней назад я не сталкивался с этими проблемами. – s3lph

Смежные вопросы