Как ограничить участников, которые не будут видеть admin_page.php использование сеанса

#php #mysql #session

#php #mysql #сеанс

Вопрос:

Я зарегистрировал сеансы, используя массив, содержащий: имя пользователя, пароль и роль. Теперь я не хочу показывать страницу администратора тому, кто заходит на сайт в качестве участника. Как я могу ограничить admin_home.php использование сеанса>

Это мой код:

-> login_check.php

 <?php
session_start();
include('connect.php');
$name = $_POST['name'];
$password = $_POST['password'];
$role = $_POST['member'];
$sql = "select * from login_register where name =
'$name' and password = '$password' and role = '$role'";
$retain = mysql_query($sql, $con);
$count=mysql_num_rows($retain);
$row=mysql_fetch_array($retain);
if($count == 1){
$_SESSION['User'] = array('name' => '$name', 'password' => 
'$password' , 'role' => '$member');
if ( $role == "admin"){
header("location:admin_home.php");}
else  if ( $role == "member"){
header("location:member_home.php");}}
else {
echo  "<a href='index.php'>click here to login   </a>";}
?>
 

-> member_home.php

 <?php
session_start();
if (!isset($_SESSION['User'])){
header('location:index.php');
}
 

-> admin_home.php

 <?php
session_start();
if (!isset($_SESSION['User']))
{
header('location:index.php');
}
?>
 

Я не хочу позволять членам клуба ни при каких обстоятельствах входить admin_home.php

Также мои поля MySQL: id, имя пользователя, пароль, роль должны меняться только в том случае, если в мою базу данных внесены какие-либо изменения. Пожалуйста, скажите мне, как я могу это реализовать.

Я уже потратил на это 2 дня и не могу в этом разобраться. Пожалуйста, помогите мне.

Заранее благодарю.

Ответ №1:

измените имя сеанса .. попробуйте это

изменение в login_check.php

 <?php
if ( $role == "admin")
{

$_SESSION['adminuser']=$_POST['name'];
header("location:admin_home.php");
}
else  if ( $role == "member")
{
header("location:member_home.php");
$_SESSION['user']=$_POST['name'];
}
 

?>

изменение в member_home.php

 <?php
session_start();
if (!isset($_SESSION['user'])){
header('location:index.php');
}
?>
 

изменение в admin_home.php

 <?php
session_start();
if (!isset($_SESSION['adminuser']))
{
header('location:index.php');
}
?>
 

попробуйте что-то вроде этого

 $_SESSION['name'] = $variab;// array variable
print_r($_SESSION['name'][0]);
 

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

1. Большое спасибо, Ежил, ты дал мне хорошее решение… я потратил на это 2 дня., теперь собираюсь выпить кофе вау .. теперь участник не может просматривать admin_home.php страница .. большое спасибо …. кроме того, можете ли вы попытаться дать мне код с сеансами в виде массива, пожалуйста

2. Я рад, что смог помочь. Пожалуйста, замаскируйте этот ответ как решение (зеленая галочка).

3. я. я пометил это как ответ .. и его 100% рабочий человек .. большое вам спасибо

4. Привет., я нашел одну вещь., при первом входе в систему участник может просматривать страницу администратора во второй раз, когда он не будет.

Ответ №2:

Вы можете изменить третью строку на admin_home.php как следовать

  if (!isset($_SESSION['User']) || $_SESSION['User']['role'] != 'admin')
 

С наилучшими пожеланиями,
Небойша

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

1. Большое вам спасибо, Небойса., теперь участник не может просматривать admin_home.php страница., но пока я вхожу в систему как администратор, я также не могу просмотреть admin_home .php ., см. У меня есть страница входа с именем пользователя: и паролем: и выберите роль: k если у меня есть логин как участника, я не просматривайте страницу администратора., если я войду в систему как администратор, я смогу просмотреть страницу администратора, это моя реальная потребность..

2. Какова ценность $_POST[‘member’] для пользователя-администратора?