У меня есть страница post.php
которая показывает сообщения на моем сайте. Он показывает функции/ссылки в зависимости от типа посещения пользователем, например, для пользователя, который написал сообщение (владелец сеанса), он будет показывать кнопки редактирования и удаления, а не для других. Для этого я использую сеансы:
if(!empty($_GET['username'])) {
$username = $_GET['username'];
}
else if(!empty($_SESSION['username'])) {
$username = $_SESSION['username'];
}
else{
// do nothing
}
Теперь проблема возникает для гостевого пользователя (пользователя, не входящего в систему), как для владельца сеанса $_SESSION['username'];
является оперативным и для пользователя logged_in (но не для владельца сеанса) $_GET['username'];
оперативно, поэтому гостевой пользователь получает неопределенную переменную на этой странице. Чтобы решить эту проблему, я добавил $username="";
to above else
так что теперь это утверждение:
if(!empty($_GET['username'])) {
$username = $_GET['username'];
}
else if(!empty($_SESSION['username'])) {
$username = $_SESSION['username'];
}
else{
$username="";
}
Это хотя и решило мою проблему, но я хочу быть уверенным, есть ли какой-либо риск для безопасности или другая проблема, используя этот метод. Любая лучшая идея приветствуется.
сначала использовать метод post для получения данных
//после успешного входа
$username = $_POST['username'];
$_SESSION['loggedin'] = generate token or true or false ur choice;
//restrict this in ur all contructor of view
if($_SESSION['loggedin']){
//ur accessible here you are authorized;
}
else {
//sorry we are redirecting you;
}
$_GET['username']
не гарантирует, что пользователь вошел в систему. Любой может ввести переменные GET (или POST).