Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055

Не работает функция проверки пользователей при авторизации

18.10.2017, 16:46. Показов 1268. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я переписал функцию входа на сайт так, чтобы при неправильном логине или пароле мне переходило не на wp-login а на страницу моего сайта

Код с function.php
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
add_action( 'wp_login_failed', 'pu_login_failed' ); // hook failed login
 
function pu_login_failed( $user ) {
     // check what page the login attempt is coming from
     $referrer = $_SERVER['HTTP_REFERER'];
     // check that were not on the default login page
     if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $user!=null ) {
          // make sure we don't already have a failed login attempt
          if ( !strstr($referrer, '/auth/' )) {
               // Redirect to the login page and append a querystring of login failed
          wp_redirect( $referrer . '/auth/');
         } else 
               wwp_redirect( $referrer );
         exit;
     }
}
 
add_action( 'authenticate', 'pu_blank_login');
 
function pu_blank_login( $user ){
    // check what page the login attempt is coming from
    $referrer = $_SERVER['HTTP_REFERER'];
 
    $error = false;
 
    if($_POST['log'] == '' || $_POST['pwd'] == '')
    {
        $error = true;
    }
 
    // check that were not on the default login page
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $error ) {
 
        // make sure we don't already have a failed login attempt
        if ( !strstr($referrer, '/auth/' )) {
            // Redirect to the login page and append a querystring of login failed
            wp_redirect( $referrer . '/auth/' );
        } else { 
 
            wp_redirect( $referrer );
        }
 
    exit;
 
    }
}   }
}
Это все работает, но теперь мне нужно добавить проверку
PHP
1
2
3
4
5
6
global $wpdb;
$access = $wpdb->get_var("SELECT `access` FROM `wp_users` WHERE `user_email` = '$user'");
...
if ( $access != '1') {
wp_redirect( $referrer . '/auth/' );
}
как я только не пробовал вставить эту проверку в функции, ничего не получается. Функции просто игнорируют условие.
Подскажите пожалуйста, что я делаю не так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2017, 16:46
Ответы с готовыми решениями:

При авторизации пользователей выдает ошибку
procedure TForm21.Button1Click(Sender: TObject); DataModule1. AdoQuery1.SQL.Clear; DataModule1. AdoQuery1.SQL.Add('SELECT * FROM...

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

Код для проверки правильности логина и пароля при авторизации выдает ошибку
Регистрация Логин Пароль Подтвердите пароль

5
29 / 26 / 18
Регистрация: 02.04.2015
Сообщений: 316
20.10.2017, 23:22
Что за поле `access`? В таблице `wp_users` нет такого "по умолчанию".
Я бы рекомендовал не лезть "прямым запросом" в базу всякий раз, когда нужна какая-либо инфа, а обратиться за помощью к встроенным функциям, например для проверки прав пользователей есть функции: current_user_can() и user_can()
0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
23.10.2017, 11:49  [ТС]
ИмяПользователя, Спасибо, но это не работает для полей, которые я добавил сам в таблицу wp_users.
0
182 / 182 / 83
Регистрация: 18.02.2014
Сообщений: 867
24.10.2017, 15:29
Shoshona, И не будет работать, а ваще поле "access" можно удалить.
Всё работает с помощью:
Цитата Сообщение от ИмяПользователя Посмотреть сообщение
Я бы рекомендовал не лезть "прямым запросом" в базу всякий раз, когда нужна какая-либо инфа, а обратиться за помощью к встроенным функциям, например для проверки прав пользователей есть функции: current_user_can() и user_can()
Добавлено через 2 минуты
Дополнительные поля пользователю через:
https://codex.wordpress.org/Fu... _user_meta
https://developer.wordpress.or... user_meta/
https://codex.wordpress.org/Fu... _user_meta
1
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
31.10.2017, 13:42  [ТС]
xpoince, Я переделал, теперь код выглядит так:

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
54
55
add_action( 'wp_login_failed', 'pu_login_failed' ); // hook failed login
function pu_login_failed( $user ) {
      $users = get_user_by('login', $user);
      $user_id = $users->ID;
      $user_blacklist = get_user_meta($user_id, 'blacklist', true); //либо '0' либо '1'
     // check what page the login attempt is coming from
     $referrer = $_SERVER['HTTP_REFERER'];
     // check that were not on the default login page
     if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $user!=null ) {
          // make sure we don't already have a failed login attempt
          if ( !strstr($referrer, '/auth/' ) || !strstr($referrer, '/auth/?errors=1' )) {
               // Redirect to the login page and append a querystring of login failed
          wp_redirect( $referrer . '/auth/?errors=1');
         } else if ( $user_blacklist == '1' ) {
             wp_redirect( $referrer . '/auth/?errors=2');
           } else {
               wp_redirect( $referrer );
         }
         exit;
     }
}
 
add_action( 'authenticate', 'pu_blank_login');
 
function pu_blank_login( $user ){
    $users = get_user_by('login', $user);
      $user_id = $users->ID;
      $user_blacklist = get_user_meta($user_id, 'blacklist', true); //либо '0' либо '1'
    // check what page the login attempt is coming from
    $referrer = $_SERVER['HTTP_REFERER'];
 
    $error = false;
 
    if($_POST['log'] == '' || $_POST['pwd'] == '')
    {
        $error = true;
    }
 
    // check that were not on the default login page
    if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') && $error ) {
 
        // make sure we don't already have a failed login attempt
        if ( !strstr($referrer, '/auth/') || !strstr($referrer, '/auth/?errors=1')) {
            // Redirect to the login page and append a querystring of login failed
            wp_redirect( $referrer . '/auth/?errors=1' );
        } else if($user_blacklist == '1') {
            wp_redirect( $referrer . '/auth/?errors=2' );
        } else {
          wp_redirect( $referrer );
        }
 
    exit;
 
    }
}
Не работает.
0
 Аватар для Shoshona
31 / 31 / 37
Регистрация: 03.06.2014
Сообщений: 1,055
03.11.2017, 17:14  [ТС]
тема по прежнему актуальна!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.11.2017, 17:14
Помогаю со студенческими работами здесь

Не работает функция проверки и разбиения строки
Привет! Имеется макрос, заполняющий шаблон Word документа значениями из ячеек Excel. В данном макросе есть функция проверки значения в...

Некорректно работает функция проверки на численность
Фрагмент кода: //... bool is_number() { //* while(cin.fail()) { cin.clear(); cin.sync(); return false;} return true;...

Не работает сессия при авторизации,не могу понять почему ?*
Создал класс сессию <?php namespace Modules; class Session { private $logged_in = false; public $user_id; ...

Не работает Http заголовок авторизации при запросе к сайту
У меня сайт на Windows Server 2008. В настройках IIS установлена проверка подлинности Basic. Доступ к странице разрешен по доменным...

Перенаправление после проверки авторизации
Здравствуйте! Всех с прошедшим Новым годом! У меня вот какая проблемка: Проверяю залогинен ли юзер на моем сайте.Если да-то его...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru