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

Поиск:

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


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Вот так у меня выглядит авторизация:
Код

$autorization = false;
if(isset($_SESSION['userid']) && $_SESSION['userid'] > 0) $autorization = true;
...
if($uri[1] == 'authoriz.php' && $autorization == false) {
        if(count($_POST) > 0) {
            $rlogin = trim(substr($_POST['login'], 0, 32)); 
            if(strlen($rlogin) < 3) {
                $redir = true;
                $regloginmsg = 'логин должен быть длиннее 2-х символов';
            } else {
                if(preg_match('/[^A-z0-9-_]+/', $rlogin)) {
                    $redir = true;
                    $regloginmsg = 'неверный формат логина';
                }
            }
            $rpass = substr($_POST['passwd'], 0, 32);
            if(strlen($rpass) < 3) {
                $redir = true;
                $regpassmsg = 'пароль должен быть длиннее 2-х символов';
            } else {
                if(preg_match('/[^A-z0-9]+/', $rpass)) {
                    $redir = true;
                    $regpassmsg = 'неверный формат пароля';
                }
            }
            if($redir == true) $content = './core/authform.inc.php'; else {
                $userid = authoriz_user($rlogin, $rpass); // возвращает id пользователя или 0, если пользователя нет в базе
                if($userid > 0) {
                    session_register('userid');
                    redirect('./index.php');
                    exit;
                } else {
                    $regmsgmain = "Авторизация не удалась. Обратитесь,пожалуйста, к <a href='mailto:$adminmail'>администратору</a>.";
                    $content = './core/authform.inc.php';
                }
            }
        } else $content = './core/authform.inc.php';
    }
...


вроде все работает, но нажимаю в браузере F5 и я снова не авторизован. Почему? Объясните plz...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Severyanin
Дата 9.8.2007, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

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



Потому что остались данные спрошлой сессии


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 9.8.2007, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



что бы это не случалось используй куки. Хотя тут дело вкуса....  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
helflip
Дата 9.8.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



занеси в $_Session['userid'] чтон-ибудь!
--------------------
 
PM MAIL   Вверх
Fally
Дата 9.8.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



aktuba
1) session_register('userid'); - так уже давно никто не делает, используй суперглобальный массив $_SESSION
2) Я не вижу чтобы где-то стартовалась/разрушалась сессия
3) и наконец, самая главная проблема, из-за которой вся эта каша:
Код

if($uri[1] == 'authoriz.php' && $autorization == false) {

Скажика мне, а с чего ты взял, что при новом старте скрипта, у тебя $autorization === true? Лично я не вижу того, чтобы у тебя эта переменная записывалась в сессию. А в начале скрипта, ты _сам_ присваиваешь ей значение false.


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Severyanin
Дата 9.8.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

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



Нет, куки вместо сессий, наверно, все же не стоит. Лучше вовремя зарегистрировать и убрать из сесии переменную. smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Fally
Дата 9.8.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Severyanin, только он самое главное, от чего зависит работа скрипта в сессию и не занёс...


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
aktuba
Дата 9.8.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

1) session_register('userid'); - так уже давно никто не делает, используй суперглобальный массив $_SESSION


Попробую... Thx.

Цитата

2) Я не вижу чтобы где-то стартовалась/разрушалась сессия


В начале скрипта стоит session_start(); А разрушать зачем?

Цитата

3) и наконец, самая главная проблема, из-за которой вся эта каша:
    
if($uri[1] == 'authoriz.php' && $autorization == false) {

Скажика мне, а с чего ты взял, что при новом старте скрипта, у тебя $autorization === true? Лично я не вижу того, чтобы у тебя эта переменная записывалась в сессию. А в начале скрипта, ты _сам_ присваиваешь ей значение false.


А кто сказал, что это переменная находиться в сессии? Вот же в самом начале скрипта:
Код

if(isset($_SESSION['userid']) && $_SESSION['userid'] > 0) $autorization = true;


P.S.: кто-нибудь, покажите правильный скрипт работы с сессией, т.е. что должно быть в начале скрипта (кроме session_start), как использовать сессии и как заканчивать скрипт с сессиями.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Fally
Дата 9.8.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сорь не заметил.
Вот здесь подробно о работе с сессиями.

Если у тебя есть возможность входа юзера на сайт, то и возможность выхода с сайта должна быть, за этим сессию и разрушают.

Это сообщение отредактировал(а) Fally - 9.8.2007, 15:52


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
aktuba
Дата 9.8.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

Если у тебя есть возможность входа юзера на сайт, то и возможность выхода с сайта должна быть, за этим сессию и разрушают.


Это-то у меня как-раз и было сделано и работало без проблем. Только вот ночью со злости удалил все. счас буду заново писать, поэтому и попросил пример.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
reich
Дата 9.8.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: -1
Всего: -6



Код

$autorization = false;

в этом проблема
PM MAIL ICQ   Вверх
aktuba
Дата 9.8.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



reich, а дальше код не пробовал посмотреть???


--------------------
user posted image
PM MAIL WWW Skype   Вверх
reich
Дата 10.8.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: -1
Всего: -6



А шо там смотреть?
Он регистрирут сессию, устанавливает $autorisation = true; а потом при обновлении странницы $autorisation становится false. И опять по новой пошло поехало.
Посмотрите тут как правильно делать авторизацию. И при обновлении все работает...
PM MAIL ICQ   Вверх
aktuba
Дата 10.8.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

А шо там смотреть?


Код смотреть. Чтобы ты знал - этот код уже работает. Вторая строка как-раз и проверяет, зарегистрирована переменная или нет. Я хоть и новичок, но такие вещи знаю, а ты похоже нет. Будь добр, не пиши здесь больше ничего, не хочу, чтобы мне объясняли незнающие люди. Заранее спасибо.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Severyanin
Дата 10.8.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

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



Цитата

А разрушать зачем?

Если ты не разрушишь сессию там, где работа с ней заканчивается, то так как она разрушится только при выходе из браузера, то при простом обновлении старые переменные будут сохранены, и скрипт может неслабо глючить.


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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