#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’] для пользователя-администратора?