Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Авторизация пользователя на php/mysql/session

#php #mysql #сессия


Делаю авторизацию, возникла такая проблема. При нажатии на 
Logout  ,  происходит редирект на login.php, т.е. на форму, но если в соседней
вкладке зайти на home.php, то редирект не происходит и пользователь как бы остаётся
в системе. Т.е. не происходит разрушение сессии.

Вот код php:

login.php

 location.href='home.php'
";   
  }

  else
  {
echo "";
}

}

?>


home.php



Untitled Document

    

Welcome

Logout logout.php


Ответы

Ответ 1



Ну, я уже не помню всех тонкостей с сессиями, но в моем видении это так: при логине создаешь некий ключ в сессии, например: //login.php if (mysql_num_rows($query) != 0){ $row = mysql_fetch_assoc($query) $user_login = $row['username']; $_SESSION['user_login'] = $user_login;//присваиваем нашему ключу значение //В нашем случае, логин юзера if(isset($_GET['requested_url']){ header('Location: '.urldecode($_GET['requested_url'])); }//Если был задан запрашиваемый адрес, то автоматически перенаправляем его туда. } Потом, когда к тебе на страницу заходят, первым делом вызываешь скрипт, который проверяет сессию: //somepage.php if(!isset($_SESSION['user_login']){ header('Location: login.php?requested_url='.urlencode($_SERVER[REQUEST_URI]));//В идеале, передавая и адрес страницы, на которую изначально хотел зайти пользователь, чтобы потом сразу перенаправить его туда. } require_once('content.php'); //logout.php session_unset(); header('Location: login.php'); Сразу, просьба исключить комментарии про голый mysql вместо PDO и иже с ним, ответ ориентируется на достижение других целей.

Ответ 2



Я использую сессии и авторизацию через $_SERVER, но может вам пригодится следующее: session_unset (); session_destroy (); $connection->close(); unset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_SERVER); header('HTTP/1.0 401 Unauthorized');

Ответ 3



Попробуй использовать unset($_SESSION['login_user']); session_destroy() не желательно использовать Используй проверки if(isset($_SESSION['login_user'])) ...

Комментариев нет:

Отправить комментарий