jasonOk
@jasonOk
Легче болтать, чем код писать

Баг с сессиями?

Возник непонятный баг, или что-то вроде этого.
id пользователя записан в $_SESSION['id'].
На некоторых страницах берется переменная
$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);

и вот тут начинается чертовщина. Почему то вместо переменной $id присваивается $_SESSION['id'].
В чём дело - не знаю.
Буквально идёт код на странице
echo $_SESSION['id'] // выведет правильное id
$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
echo $_SESSION['id'] // уже будет другое значение
if(empty($id) || $id < 1) $id = $_SESSION['id'];

Или всё дело в filter_var()?
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ответы на вопрос 3
@link_irk
Попробуйте вместо filter_var использовать ф-цию intval(). Она тоже поможет защититься от SQL инъекций, потому как возвращает false, если переданный аргумент не удалось преобразовать в целое число
Ответ написан
AloneCoder
@AloneCoder
[object Object]
Вангую, что вот так будет работать нормально
echo $_SESSION['id'];
$idGet = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
echo $_SESSION['id'];
Ответ написан
maximw
@maximw
У вас случаем не стоит register_globals = on ?

Если используете Apache, попробуйте добавить в корневую папку сайта в .htaccess строку:
php_flag register_globals off

Если это на хостинге, проконсультируйтесь с тех. поддержкой хостинга. Возможно у них где-то в настройках можно это выключить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы