Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now
Sign InSign Up

PHP-J

PHP-J

PHP-J Navigation

  • Главная
  • Контакты
Поиск
Задать вопрос

Mobile menu

Close
Задать вопрос
  • Главная
  • Add group
  • User Profile
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Buy Points
Home/ Questions/Q 83349
Next
Answered
thomasclayson
  • 0
thomasclaysonНовичок
Asked: 20 марта, 20222022-03-20T19:02:52+03:00 2022-03-20T19:02:52+03:00In: Wordpress (Вопросы и ответы)

Создание пользовательских ошибок входа

  • 0

Я хочу иметь возможность создавать собственные ошибки входа в систему.

Например, если пользователь посещает зону с ограниченным доступом, не войдя в систему, я перенаправляюсь туда, wp-login.php?ref=access и я хотел бы вывести Restricted area, please login to continue. или что-то подобное.

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

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

У кого-нибудь есть идеи?

Спасибо

Том

errorslogin
  • 6 6 ответов
  • 18 просмотров
  • 0 Followers
  • 0
Ответить
Share
  • Facebook

    6 ответов

    • Лучшие оценки
    • Старые
    • Недавние
    • Случайные
    1. Лучший ответ
      rarst Гуру
      2022-03-20T19:03:27+03:00Добавлен ответ 20 марта, 2022 в 7:03 пп

      Из быстрого взгляда на код экрана входа в систему (ой):

      add_action('login_head','ref_access');
      
      function ref_access() {
      
          global $error;
      
          if( !empty($_GET['ref']) && 'access' == $_GET['ref'] )
              $error  = 'Restricted area, please login to continue.';
      }
      
      • 0
      • Reply
      • thomasclayson Новичок
        2022-03-20T19:04:25+03:00Replied to ответ 20 марта, 2022 в 7:04 пп

        о, блестяще. 🙂 Спасибо. Как, черт возьми, ты это понял?! :p Большое спасибо.

        • 0
        • Reply
      • rarst Гуру
        2022-03-20T19:05:14+03:00Replied to ответ 20 марта, 2022 в 7:05 пп

        @Thomas Clayson смотрите код login_header() функции. Он ожидает, что будет передана ошибка (что, вероятно, потребует от вас добавления и обработки пользовательского действия, беспорядочно), но он также проверяет эту глобальную $error переменную, которую, как вы видите, тривиально изменить. 🙂

        • 0
        • Reply
      • tristancharbonnier Новичок
        2022-03-20T19:05:54+03:00Replied to ответ 20 марта, 2022 в 7:05 пп

        Пожалуйста, взгляните на решение @Meitar ниже, которое намного чище.

        • 0
        • Reply
    2. m Новичок
      2022-03-20T19:06:49+03:00Добавлен ответ 20 марта, 2022 в 7:06 пп

      Краткое обновление. Начиная с WordPress версии 3.6, использование глобальной переменной, как предлагает Рарст, очень беспорядочно, и оно затирает любые другие сообщения об ошибках ядра, плагина или темы, хранящиеся в этой переменной.

      Глобальная error переменная, на которую ссылается Rarst, на самом деле является WP_Error объектом, который сам отвечает за сопоставление ошибок из различных событий в жизненном цикле вызовов WordPress. Поэтому, пожалуйста, не затирайте его значения, это очень усложняет отладку.

      Вместо этого используйте wp_login_errors фильтр (не login_errors ) и add() ошибки там. Так:

      add_filter('wp_login_errors', 'my_custom_errors');
      function my_custom_error ($errors) {
          if ('access' === $_GET['ref']) {
              $errors->add('access', 'Restricted area, please login to continue.');
          }
          return $errors;
      }
      
      • 0
      • Reply
    3. itsme Новичок
      2022-03-20T19:07:37+03:00Добавлен ответ 20 марта, 2022 в 7:07 пп

      ( ПРИМЕЧАНИЕ. Это не совсем отвечает на ваш вопрос.)

      Если я не ошибаюсь, login_errors фильтр, о котором вы говорите, предназначен для отображения сообщения при вводе неправильного имени пользователя/пароля.

      Итак, по умолчанию вам будет отображаться это, когда вы вводите неправильное имя пользователя:

      ОШИБКА: Недопустимое имя пользователя.

      И это для неправильного пароля:

      ОШИБКА: Вы ввели неверный пароль для имени пользователя XXXXX.

      Дело в том, что вы можете использовать login_errors фильтр для отображения пользовательского сообщения:

      function fake_error(){
          return 'SORRY, LOGIN DISABLED!';
      }
      add_filter( 'login_errors', 'fake_error' );
      

      Как правило, используется в качестве меры безопасности (через неясность?), Чтобы злоумышленник не знал, ввел ли он неправильное имя пользователя или неправильный пароль.

      • 0
      • Reply

    Оставить ответ
    Отменить ответ

    You must login to add an answer.

    Forgot Password?

    Need An Account, Sign Up Here

    Sidebar

    Ask A Question

    Stats

    • Questions : 7k
    • Answers : 38k
    • Best Answers : 4k
    • Users : 5k
    • Popular
    • Answers
    • netconstructorcom

      Лучшая подборка кода для вашего файла functions.php [закрыто]

      • 97 Answers
    • MikeSchinkel

      Объективные рекомендации по разработке плагинов? [закрыто]

      • 83 Answers
    • EAMann

      Как легко перенести установку WordPress из стадии разработки в рабочую ...

      • 60 Answers
    • EarleSemia
      EarleSemia added an answer [url=http://images.google.com.uy/url?q=https://big2dickporn.club/2022/06/21/ШЈШ±ШЁШ№Ш©-Ш±ЩЃШ§Щ‚-ЩЉЩ…Ш§Ш±Ші-Ш§Щ„Ш¬Щ†Ші-Щ…Ш№-ШІЩ€Ш¬ШЄЩЉ.html]ШЈШ±ШЁШ№Ш©-Ш±ЩЃШ§Щ‚-ЩЉЩ…Ш§Ш±Ші-Ш§Щ„Ш¬Щ†Ші-Щ…Ш№-ШІЩ€Ш¬ШЄЩЉ[/url] 6 июля, 2022 at 9:18 дп
    • Karenfreva
      Karenfreva added an answer [url=https://sildenafilviashop.com/]viagra over the counter[/url] cialis vs viagra [url=https://tblsviagra.com/]cheap viagra online[/url]… 27 июня, 2022 at 11:19 дп
    • Karenfreva
      Karenfreva added an answer [url=https://casinoboba.com/]lucky creek[/url] uptown ace casino [url=https://casinowingames.com/]sloto cash casino[/url] andromeda [url=https://realmonetcasino.com/]ignition[/url]… 25 июня, 2022 at 12:21 пп

    Похожие вопросы

    • nmystic

      Как назначить файл по умолчанию в «Внешний вид > Редактор»?

      • 0 Answers
    • billeisenhauer

      Как показать полную публикацию на главной странице

      • 0 Answers
    • atticus

      Создание пользовательских запросов AJAX

      • 1 Answer

    Лучшие участники

    rarst

    rarst

    • 0 Questions
    • 5k Points
    Гуру
    bainternet

    bainternet

    • 0 Questions
    • 5k Points
    Гуру
    janfabry

    janfabry

    • 0 Questions
    • 3k Points
    Гуру

    Trending Tags

    categories comments custom-field custom-post-types custom-taxonomy customization functions images menus multisite pages permalinks php plugin-development plugin-recommendation plugins posts theme-development themes widgets wp-admin

    Footer

    © 2022

    Вставить/изменить ссылку

    Введите адрес назначения (URL)

    Или сделайте ссылку на существующий материал

      Поисковый запрос не задан. Показаны недавние элементы. Воспользуйтесь поиском или клавишами вверх/вниз, чтобы выбрать элемент.