Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298

идентификация типа пользователя

22.03.2012, 15:16. Показов 1853. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вопрос наверное более, чем детский, но вот у меня все никак не получается)
есть 2 типа админ и юзер, получается, при авторизации проверям тип, если админ выводим вы зашли как админ, аналогично с юзером. Если захожу как админ, нормално выводит, если захоже как юзер, то выводит 2 записи, вы вошли, как админ и вы вошли как юзер.
вот код
PHP
1
2
3
4
5
6
7
8
if($_SESSION['type'] ='admin')
{
echo "<center><h3>Вы вошли как админ</center></h3>";
}
if($_SESSION['type'] ='user')
{
echo "<center><h3>Вы вошли как user</center></h3>";
                            }
Если пишу например

PHP
1
2
3
4
5
6
7
8
if($_SESSION['type'] ='admin')
{
echo "<center><h3>Вы вошли как админ</center></h3>";
}
else
{
echo "<center><h3>Вы вошли как user</center></h3>";
}
то все время выводит вы вошли как админ.
Пробывал ещё так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$admin=false;
$user=false;
if($_SESSION['type'] ='admin')
{
$admin=true;
$user=false;
}
if($_SESSION['type'] ='user')
{
$admin=false;
$user=true;
}
if  ($user=true)
{
echo "<center><h3>вы вошли как user</center></h3>";
}
if  ($admin=true)
{
echo "<center><h3>вы вошли как admin</center>/<h3>";
}
тоже выводит 2 записи Подскажите, что я делаю не так.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2012, 15:16
Ответы с готовыми решениями:

Идентификация пользователя кукой
Делаю простое CRUD приложение. Что-то вроде доски объявлений. Объявления смогут добавлять только авторизированные пользователи. Чтобы...

Безошибочная идентификация пользователя
На сайте имеется модуль голосования. Как сделать, чтобы с одного компьютера можно было голосовать только один раз? То есть как...

Идентификация пользователя
Помогите советом или примером по созданию запроса при идентификации пользователя. Имеются 2 формы в Delphi и некая база на SQL Server 2008...

12
 Аватар для CrazyFreeMan
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
22.03.2012, 15:34
PHP
1
if($_SESSION['type'] ='admin')
- зачем присваиваешь?)))

пиши -
PHP
1
if($_SESSION['type'] =='admin')
1
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
22.03.2012, 16:59  [ТС]
Вечный косяк, изначально же все правильно сделал, все норм выводило, потом что -то изменял, потерял 1 знак и как всегда не обращаю внимания. Спасибо.

Добавлено через 1 час 21 минуту
Извиняюсь, снова я. Не буду создавать отдельную тему напишу тут.
В файле авторизации
PHP
1
$_SESIION['login'] = $ath['login'];
далее, все тот же тип проверяю, если админ, то кидает на определенную страницу, на которой есть код
PHP
1
2
3
4
5
6
7
8
9
10
11
<?session_start();?>
<?
if($_SESSION['type'] =='admin')
    {
    echo  $_SESSION['login'];
    }
else
    {
     echo "<center><h3>Извините, но вы не имеете доступа к админ-панели</h3></center>";
    }
?>
Просто разбираюсь с сессиями, но не разбирается, не хочет выводить мне логин. Вроде смотрел примеры, все делаю правильно, но получается, что не правильно, подсобите, объясните пожалуйста)
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
22.03.2012, 17:21
Цитата Сообщение от necro Посмотреть сообщение
$ath['login'];
наверно пустой , $_SESSION обычный массив , что там разбиратся
0
 Аватар для CrazyFreeMan
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
22.03.2012, 17:23
По коду все красиво, в начале файла(после session_start(); ) выведи весь массив
PHP
1
print_r($_SESSION);
Вариант - не записал данные на странице login или где-то уничтожил session_destroy();
0
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
22.03.2012, 17:33  [ТС]
сессию не уничтожал нигде, добавил
PHP
1
print_r($_SESSION)
выдало вот что:
Array ( [type] => admin [counter] => 34 )

Прошу прощения, 34 это сколько раз я страницу обновил, просто добавлял код для проверки, а так в массиве ничего нету.
Array ( [type] => admin )

upd
добавил
PHP
1
2
ini_set('display_errors',1);
error_reporting(E_ALL);
выдает
Notice: Undefined index: login in
0
 Аватар для CrazyFreeMan
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
22.03.2012, 18:05
Ну вот теперь ищи где ты не присвоил $_SESSION['login'];
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.03.2012, 18:14
Цитата Сообщение от necro Посмотреть сообщение
Вечный косяк, изначально же все правильно сделал, все норм выводило, потом что -то изменял, потерял 1 знак и как всегда не обращаю внимания.
Пишите наоброт. Это нагляднее и надежнее, ибо в константу присвоить уже не получится.
PHP
1
2
3
4
5
6
7
8
9
if ('admin' == $_SESSION['type']) {
 
}
elseif ('user' == $_SESSION['type']) {
 
}
else {
 
}
Либо в данном случае лучше даже так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch ($_SESSION['type']) {
    case 'admin': {
        echo 'Адмиристратор';
    }
    break;
 
    case 'user': {
        echo 'Пользователь';
    }
    break;
 
    default: {
        echo 'Гость';
    }
}
0
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
22.03.2012, 18:18  [ТС]
Вот весь код с двух файлов, где я что пропустил?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?
    $user=true;
    $admin=true;
    $result=false;
    include('connect.php');
    if(isset($_POST['go']))
        {
            if  ($_POST['login'] !="" && $_POST['pass'] !="")
                {
                    $login = $_POST['login'];
                    $pass = $_POST['pass'];
                    $query= "SELECT * FROM user WHERE login = '$login'";
                    $auth = mysql_query($query);
                    if(mysql_num_rows($auth) == 1)
                        {
                        $ath = mysql_fetch_array($auth);
                            if(strcmp($ath['pass'], $pass) != 0)
                                {
                                echo "<center><h3>Пароль не соответствует логину</h3></center>";
                                }
                            else
                                {
                                $_SESSION['type'] = $ath['type'];
                                $_SESIION['login'] = $ath['login'];
                                $result=true;
                                echo "<center><h1>Здравствуйте, <font color=red><b><i>$login.</i></b></font><br/> Вы успешно вошли в систему</h1></center>";
                                if($_SESSION['type'] =='admin')
                                {
                                echo "<center><h3>Вы вошли как админ. Для продолжения <a href='admins.php'>Нажмите</a></center></h3>";
                                }
                                if($_SESSION['type'] =='user')
                                {
                                echo "<center><h3>Вы вошли как user. Для продолжения <a href='admins.php'>Нажмите</a></center></h3>";
                                }
 
                                }   
                                
                        }
                        else
                            {
                            echo "<center><h3>Пользователя с таким логином не существует</h3></center>";
                            }
                        }
            else
                {
                echo "<center><h3>Вы заполнили не все поля</h3></center>";
                }
        }
        
    ?>
PHP
1
2
3
4
5
6
7
8
9
10
<?
if($_SESSION['type'] =='admin')
    {
         echo $_SESSION['login'];
    }
else
    {
     echo "<center><h3>Извините, но вы не имеете доступа к админ-панели</h3></center>";
    }
?>
0
 Аватар для CrazyFreeMan
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
22.03.2012, 18:28
Пробежался по коду - все "ок", только нигде не вижу я session_start(); ни в первом файле ни во втором.
И надеюсь этот код не в продуктиве а то полигон для инъекций и взломом, защита слабенькая, сильно доверяешь юзеру.
0
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
22.03.2012, 18:36  [ТС]
сессии и там и там запущены, просто в самом начале файла, а между ними ещё куски кода есть.
Это я диплом пишу, взялся на свою голову на php, который вообще не знаю)
правда в итоге это будет рабочая программа, но я думаю к тому времени или я или другие люди защитят.
Но по ходу вопроса он так и остался, работать то не работает.. значит что-то все таки не так.
0
 Аватар для CrazyFreeMan
13 / 13 / 5
Регистрация: 06.12.2011
Сообщений: 50
22.03.2012, 18:44
немного переписал на свой лад (работоспособность не проверял)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
    session_start();
     require_once('connect.php');
        if(isset($_POST['go']))
                {
                        if (!empty($_POST['login']) || !empty($_POST['pass'])) /* тут можно добавить еще проверку по регулярке на допустимый вариант логина-пароля*/
                                {
                                        $login = mysql_real_escape_string($_POST['login']);
                                        $pass = mysql_real_escape_string($_POST['pass']);
                                        $query= "SELECT * FROM user WHERE login = '".$login."' AND pass = '".$pass."'";
                                        if($auth = @mysql_query($query))                                        {
                                        
                        if(@mysql_num_rows($auth) == 1)
                            {
                                  if($ath = @mysql_fetch_array($auth))
                                                                    {                                                                       
                                                                        $_SESSION['type'] = $ath['type'];
                                                                        $_SESIION['login'] = $ath['login'];
                                                                    
                                                                        echo "<center><h1>Здравствуйте, <font color=red><b><i>".$login.".</i></b></font><br/> Вы успешно вошли в систему</h1></center>";
                                                                        if($_SESSION['type'] =='admin')
                                                                        {
                                                                        echo "<center><h3>Вы вошли как админ. Для продолжения <a href='admins.php'>Нажмите</a></center></h3>";
                                                                        }
                                                                        if($_SESSION['type'] =='user')
                                                                        {
                                                                        echo "<center><h3>Вы вошли как user. Для продолжения <a href='admins.php'>Нажмите</a></center></h3>";
                                                                            }
                                                                            }
                                                                            else
                                                                            {
                                                                            echo "<center><h3>Ошибка обработки  данных - ".mysql_error()."!</h3></center>";
                                                                            }
                                                                              
                                                                        
                                                        }
                                                        else
                                                                {
                                                                echo "<center><h3>Пользователя с таким логином не существует</h3></center>";
                                                                }
                                            }
                                            else
                                            {
                                                echo "<center><h3>Ошибка выгрузки данных- ".mysql_error()."!</h3></center>";
                                            }
                               }
                        else
                                {
                                echo "<center><h3>Вы заполнили не все поля</h3></center>";
                                }
                }
                
        ?>
0
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
22.03.2012, 18:49  [ТС]
изменил include на require_once все заработало,странно, почитаю про различия на досуге.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2012, 18:49
Помогаю со студенческими работами здесь

Идентификация пользователя по голосу
НаучРук дал тему &quot;Идентификация пользователя по голосу&quot;. Реализую на C#. Идентификация будет проходить так. Человек (диктор)...

Идентификация пользователя сайтом
Можете, пожалуйста, написать, какие именно &quot;параметры&quot; работы в интернете позволяют идентифицировать пользователя? Пояснение: Под...

Идентификация компьютера пользователя
Здравствуйте. Появилась задача усовершенствовать скрипт голосования на сайте. Сейчас ограничение для голосования идет по ip, проблема в...

Идентификация пользователя по голосу
Необходимо написать распознавание пользователя по голосу т.е. я произнес речь, на экране появилось мое имя или кто-то иной произнес и его...

Идентификация пользователя в сети
Приветствую. Подскажите, как пользователь идентифицируется в сети, и где это отмечается ? Добавлено через 13 минут Приветствую....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru