PHP
Вопрос по сессиям php
Имею id сессии. Проверять авторизован ли пользователь полагаю нужно с помошью if isset( ???), но что писать вместо ???
У вас на сервере есть некий список пользователей (каждый пользователь да, однозначно определяется номером сессии).
Вы получаете от пользователя в заголовках его номер сессии и смотрите, есть ли этот номер сессии в вашем списке сессий пользователей.
Если он там есть, то с вероятностью 99% этот пользователь уже был у вас на сайте. (Но тут тоже могут быть тонкости, его сессия могла устареть, если пользователя не было сутки, к примеру, и его надо будет послать на повторное запрашивание пароля).
Если такой сессии нет у вас в списке сессий, то с вероятностью 99% это новый пользователь. Его вы вносите в свой список, отмечаете временнУю отметку, когда от него была в последний раз активность (чтобы потом в будущем узнать, не устарела ли сессия).
Про проверку авторизации пользователя.
Пользователь может быть вовсе не авторизован (как, например, здесь, в проекте Ответы можно заходить посмотреть вопросы, не регистрируясь в проекте).
Пользователь может быть зарегистрирован и авторизован на проекте (и тогда у вас на вашем проекте у него, например, могут появится новые возможности - например, ответить на вопрос или лайкнуть).
И еще вы путаете просто перечень посетителей вашего сайта с перечнем авторизованных пользователей. Это разные сущности.
Вы получаете от пользователя в заголовках его номер сессии и смотрите, есть ли этот номер сессии в вашем списке сессий пользователей.
Если он там есть, то с вероятностью 99% этот пользователь уже был у вас на сайте. (Но тут тоже могут быть тонкости, его сессия могла устареть, если пользователя не было сутки, к примеру, и его надо будет послать на повторное запрашивание пароля).
Если такой сессии нет у вас в списке сессий, то с вероятностью 99% это новый пользователь. Его вы вносите в свой список, отмечаете временнУю отметку, когда от него была в последний раз активность (чтобы потом в будущем узнать, не устарела ли сессия).
Про проверку авторизации пользователя.
Пользователь может быть вовсе не авторизован (как, например, здесь, в проекте Ответы можно заходить посмотреть вопросы, не регистрируясь в проекте).
Пользователь может быть зарегистрирован и авторизован на проекте (и тогда у вас на вашем проекте у него, например, могут появится новые возможности - например, ответить на вопрос или лайкнуть).
И еще вы путаете просто перечень посетителей вашего сайта с перечнем авторизованных пользователей. Это разные сущности.
Наличие сессии проверяй (никто не знает, как она у тебя создана)
Ергали Раимкулов
у меня $row['id'] - достает id пользователя, а session_id($row['id']) - создает определенный идентификатор сессии.
Ергали Раимкулов
мне в принципе наличие сессии проверять же, а не конкретно по id? А ну да, логично. спасибо
я так делал:
if ( !isset($_SESSION['RegAktiv']) and isset($_COOKIE['ChezClab'])) {
require_once $_SERVER['DOCUMENT_ROOT'].'/bd.php';
$sql="SELECT `MyKey`,`mysesiya` FROM `My_BD`.`Id_Reg` WHERE `mysesiya`='".$_COOKIE['ChezClab']."'";
foreach ($pdo->query($sql) as $row) {
if ($row['MyKey']){$MyKey=$row['MyKey'];}
if ($row['mysesiya']){$mysesiya=$row['mysesiya'];}
If ($mysesiya==$_COOKIE['ChezClab'])
{
//сессия найдена авторизованного пользователя, твой код
}
}
if ( !isset($_SESSION['RegAktiv']) and isset($_COOKIE['ChezClab'])) {
require_once $_SERVER['DOCUMENT_ROOT'].'/bd.php';
$sql="SELECT `MyKey`,`mysesiya` FROM `My_BD`.`Id_Reg` WHERE `mysesiya`='".$_COOKIE['ChezClab']."'";
foreach ($pdo->query($sql) as $row) {
if ($row['MyKey']){$MyKey=$row['MyKey'];}
if ($row['mysesiya']){$mysesiya=$row['mysesiya'];}
If ($mysesiya==$_COOKIE['ChezClab'])
{
//сессия найдена авторизованного пользователя, твой код
}
}
Panda85_Ak .
Подмены, как и sql-инъекций полагаю, просто не существует, а все пользователи милые душки?
Похожие вопросы
- Вопрос людям знающим php.
- Вопрос по теме php devel studio
- Вопрос начинающего программиста Python\PHP
- PHP Polling ChatGPT
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Не работает PHP include на хостинге
- Вопрос к PHP-программистам и людям с опытом создания telegram-ботов. Спасибо заранее!
- Почему говорят про глобальный массив $GLOBALS в то же время данные передают через сессии?
- Хеширование пароля php
- Подскажите хороший курс по PHP практике?