jiewmeng
  • 0
Учитель

Зачем мне проверять существование wp_nonce_field() перед его использованием

  • 0

я действительно не понимаю, зачем проверять, существует ли функция nonce перед ее запуском…

if ( function_exists('wp_nonce_field') ) 
     wp_nonce_field('gmp_nonce_check');

Я так понимаю это для обратной совместимости…

Также обратите внимание, как вы проверяете существование wp_nonce_field функции, прежде чем пытаться вызвать ее для обратной совместимости.

но он все равно не сломается, если при отправке обратно я проверю

if ( isset($_POST['submit']) ) {
     check_admin_referer('gmp_nonce_check');
Share
  1. jiewmeng, вам следует изменить вопрос, чтобы он был более конкретным. Я думаю, что идеальным названием было бы «Зачем мне проверять, существует ли wp_nonce_field() перед его использованием?»

    • 0
  2. Ответ заключается в том, что вам не следует проверять существование wp_nonce_field() перед его использованием!

    Рекомендация выполнить проверку предполагает, что вы хотите быть совместимым с версиями WordPress до появления этой функции. Если Rarst прав в том, что он был представлен в 2.0.4, то вам НЕ следует поддерживать более ранние версии, поскольку все они абсолютно небезопасны, и любой, кто их использует, должен обновить их ПРЯМО СЕЙЧАС.

    Обычно вам не нужно проверять наличие функций внутри WP, в отличие от функций из плагинов, которые могут быть не активированы.

    Где вы увидели тот комментарий, который вы цитировали? Его следует удалить.

    • 0
  3. Если я правильно понял ваш вопрос, вы спросите, почему нет необходимости проверять, определен ли также check_admin_referer()?

    Насколько я вижу из документов, эта функция намного старше (начиная с WP 1.2.0), чем wp_nonce_field() (начиная с WP 2.0.4). Так что я предполагаю, что вы с гораздо меньшей вероятностью столкнетесь с такой древней версией, в которой нет check_admin_referer().

    • 0
  4. Вы проверяете наличие функции, чтобы предотвратить фатальную ошибку и последующую остановку приложения, когда ваш код выполняется в версии WordPress, которая не включает функцию, которую вы пытаетесь использовать.

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

    Обработка ошибок должна быть «изящной» в любой системе — это означает, что приложение должно знать, как обнаруживать собственные ошибки и обрабатывать их соответствующим образом с минимальным вмешательством для конечных пользователей. Подробнее читайте на http://www.devshed.com/c/a/PHP/PHP-Application-Development-Part-Two/2/#wIxuV7yhLhBTU1UZ.99.

    Таким образом, в вашем коде вы можете сделать следующее:

    if ( function_exists('wp_nonce_field') ) {
     wp_nonce_field('gmp_nonce_check');
    } else {
     //do nothing
     exit() ;
    }
    
    • 0

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

You must login to add an answer.