Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> авторизация - session 
:(
    Опции темы
pshechka
Дата 2.5.2007, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Я делаю авторизацию с ролями.Т.е у каждого пользователя своя роль(0-обычный пользователь ,1-админ).Для каждой роли предназначена своя информация.ПРоблема в том, что когда я ввожу логин и пароль пользователя с ролью 1,он не определяет, что это-админ.Выводит мне --- зарегистрирован Обычный пользователь

Вот моя таблица(users) в MYSQLе:
Код

create table users (
id tinyint default '0' NOT NULL ,
login varchar ( 20 ) NOT NULL ,
pass varchar ( 20 ) NOT NULL ,
email varchar ( 40 ) NOT NULL ,
PRIMARY KEY ( login ) };



ВОТ ЗАПИСЬ В БД:
id login pass email 
1 admin 161291 [email protected] 

Вот моя проверка ЛОГИНА И ПАРОЛя:
Код

<?php 
$db_name="users"; 
$table="users"; 
$host="localhost"; 
$user="root"; 
$pass="161291"; 
$link=mysql_connect($host,$user,$pass) or 
die(mysql_errno($link).mysql_error($link)); 
$db=mysql_select_db($db_name,$link) or 
die(mysql_errno($link).mysql_error($link)); 
$login=$_POST['login']; 
$pass=$_POST['pass']; 
$sqlquery = "select * From users WHERE login = \"$login\""; 
$result=mysql_query($sqlquery, $link) or 
die(mysql_errno($link).mysql_error($link)); 
$data=mysql_fetch_array($result); 
if ($login==$data[1] && $pass==$data[2]){ 
session_start(); 
$_SESSION['is_logged'] = TRUE; 
$_SESSION['user_role'] = $data[0]; 
header('Location: admin.php'); 

else { 
echo ("Неверный логин или пароль");} 
exit(); 


//А ЭТО СТРАНИЧКА РАСПРЕДЕЛЕНИЯ РОЛЕЙ(admin.php):

<?php 
if((!isset($_SESSION['is_logged'])) || ($_SESSION['is_logged']==TRUE)){ 
echo ("ЗАрегистрирован"); 
if($_SESSION['user_role']==1){ 
echo ("АДМИН");} 
else { 
echo ("Обычный пользователь");} 

else { 
echo ("НЕ ЗАРЕГиСТРИРОВАН"); 

?> 




//Но ерунда в том, что если я меняю : 
if((!isset($_SESSION['is_logged'])) || ($_SESSION['is_logged']==TRUE)){
echo ("принимает регистрацию");
if($_SESSION['user_role']==0){
echo ("АДМИН");}
else {
echo ("Обычный пользователь");}
}
else {
echo ("НЕ ЗАРЕГЕСТРИРОВАН");
}
ТО пишет------зарегистрирован АДМИН.Значит ошибка в том, что сессия не правельно записывает значение роли, или не правельно его забирает. 


ПОМОГИТЕ ПЛИЗ.БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН.    smile 

 ! 
PARROT
Пользуемся кнопкой КОД



Это сообщение отредактировал(а) PARROT - 2.5.2007, 09:42
PM MAIL   Вверх
cardinal
Дата 2.5.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Модератор: Название темы должно отражать ее суть!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
SelenIT
Дата 2.5.2007, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



pshechka, а кто будет в страничке распределения ролей сессию стартовать, чтоб считать из неё хоть что-либо - Пушкин, что ли?

А так у Вас сначала срабатывает условие !isset($_SESSION['is_logged']) и на этом первая проверка заканчивается (кстати, по логике скрипта условие явно неправильное, должно быть как раз isset и && вместо ||) и скрипт заходит в первый if. А $_SESSION['user_role'], соответственно, тоже не определена, что при нестрогом сравнении (==, а не ===) даёт тот же false, что и 0 - поэтому результатом сравнения оказывается true...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
pshechka
Дата 2.5.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Цитата(SelenIT @ 2.5.2007,  01:56)
pshechka, а кто будет в страничке распределения ролей сессию стартовать, чтоб считать из неё хоть что-либо - Пушкин, что ли?

А так у Вас сначала срабатывает условие !isset($_SESSION['is_logged']) и на этом первая проверка заканчивается (кстати, по логике скрипта условие явно неправильное, должно быть как раз isset и && вместо ||) и скрипт заходит в первый if. А $_SESSION['user_role'], соответственно, тоже не определена, что при нестрогом сравнении (==, а не ===) даёт тот же false, что и 0 - поэтому результатом сравнения оказывается true...

Т.е должно быть так?:
Код

<?php 
session_start();
if((!isset($_SESSION['is_logged'])) && ($_SESSION['is_logged']==TRUE)){ 
echo ("ЗАрегистрирован"); 
if($_SESSION['user_role']===1){ 
echo ("АДМИН");} 
else { 
echo ("Обычный пользователь");} 

else { 
echo ("НЕ ЗАРЕГиСТРИРОВАН"); 

?> 

Я ВАС ПРАВЕЛЬНО ПОНЯЛ?
PM MAIL   Вверх
SelenIT
Дата 2.5.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



pshechka, имхо как-то так:
Код

<?php 
session_start();
if(!empty($_SESSION['is_logged'])){ // так короче, чем (isset($_SESSION['is_logged']) && $_SESSION['is_logged']) :)
    echo ("Зарегистрирован ");
    if($_SESSION['user_role']==1){ 
        echo ("АДМИН");} 
    else { 
        echo ("Обычный пользователь");} 
    }
}
else { 
    echo ("НЕ ЗАРЕГИСТРИРОВАН"); 

?> 



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
pshechka
Дата 3.5.2007, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Если я захожу не по форме авторизации, а просто сразу ввожу адресс проверки введенных данных, то он пишет :
ЗАрегистрированОбычный пользователь.ЧТо надо дописать, чтобы он не присваивал автоматом никаких значений???


Это сообщение отредактировал(а) pshechka - 3.5.2007, 00:26
PM MAIL   Вверх
dimcat
Дата 15.5.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Сделай для пользователя ключ 1, для админов 2, а 0, который по умолчанию будет для неподтвердивших регистрацию... И пусть себе присваивает...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0929 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.