Помощь проблема с авторизацией в модуле

Тема в разделе "DLE", создана пользователем likarek, 20 фев 2010.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. likarek

    likarek Создатель

    Регистр.:
    21 фев 2009
    Сообщения:
    14
    Симпатии:
    0
    Собственно пишу модуль и вот какая проблема
    есть страничка, на ней два поля одно для подписи второе для сообщения, после заполнения отправляем данные на обработку, так вот суть в том что бы сделать автоматическое вставление в подпись логин юзера
    вот код в который передается post запрос от подписи
    (пишет введеный логин или если поле осталось пустым пишет гость)
    PHP:
    if( $_POST['user_name'] ) $user_name $_POST['user_name']; 
    else 
    $user_name "Гость";
    вот код который использую для авторизации пользователя
    PHP:
    $user_group get_vars"usergroup" );

    require_once 
    ENGINE_DIR '/modules/sitelogin.php';
    if (
    $is_logged ) { $user_name $member_id['name']; }
    if (!
    $is_logged){
        if( 
    $_POST['user_name'] ) $user_name $_POST['user_name']; 
        else 
    $user_name "Гость";
    }
    код работает, т.е. подписывает логин если юзер авторизовался, или пишет гость если не прошел авторизацию и оставил поле пустым.
    но почему выскакиваю ошибки, если авторизован

    Notice: Undefined index: key in ...\engine\modules\sitelogin.php on line 105

    а если не авторизован

    Notice: Undefined index: dle_log in ...\engine\modules\sitelogin.php on line 46
    Notice: Undefined index: dle_user_id in ...\engine\modules\sitelogin.php on line 113

    собственно как решить проблему?
     
  2. z00f

    z00f Создатель

    Регистр.:
    17 апр 2009
    Сообщения:
    32
    Симпатии:
    3
    Я так понимаю, ты пишешь модуль не интегрированный в движок, т.е он работает и запускается отдельно.
    В таком случае в самом начале кода вставь:
    PHP:
    @error_reporting E_ALL E_NOTICE );
    @
    ini_set 'display_errors'true );
    @
    ini_set 'html_errors'false );
    @
    ini_set 'error_reporting'E_ALL E_NOTICE );
    define 'DATALIFEENGINE'true );
    $member_id FALSE;
    $is_logged FALSE;
    И еще, не совсем по теме,но
    PHP:
    if( $_POST['user_name'] )
    замени на
    PHP:
    if( isset($_POST['user_name']) and  strlen($_POST['user_name'])>)
    сперва всегда должно проверяться наличие $_POST, иначе в версиях от php5 будет выводиться предупреждение.
     
  3. likarek

    likarek Создатель

    Регистр.:
    21 фев 2009
    Сообщения:
    14
    Симпатии:
    0
    Спасибо огромное, помогло! а я 2 дня сидел над этим ((
     
  4. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    про фильтрацию не забудь
    хотябы такую
    Код:
    $Cto_to = $db->safesql($_REQUEST['ctoto']);
    
     
  5. z00f

    z00f Создатель

    Регистр.:
    17 апр 2009
    Сообщения:
    32
    Симпатии:
    3
    А зачем тут фильтрация, извините?
    В этом скрипте уже ничего не поможет, все важные действия уже сделаны ДО.
     
Статус темы:
Закрыта.