是什么导致了“你确定要这么做吗?”插件有错误吗?

时间:2012-08-06 作者:Geoff Maddock

这是我遇到的一个奇怪的案子。多年来,当我尝试进行某些后端更改时,我的一个网站开始抛出这个“错误”。它似乎无处不在——如果我尝试安装、更新、激活或停用任何插件。一般来说,我仍然可以查看插件列表并查看它们的设置。

有没有想过从哪里开始寻找?

4 个回复
SO网友:TheDeadMedic

nonce 检查失败。

我认为可能的原因是与referer冲突(作为nonce安全的一部分,WP检查referer是否是同一域和路径上的管理页面)。

您可以通过在中定义自定义函数来排除这种情况wp-config.php:

function check_admin_referer($action = -1, $query_arg = \'_wpnonce\') {
    if ( -1 == $action )
        _doing_it_wrong( __FUNCTION__, __( \'You should specify a nonce action to be verified by using the first parameter.\' ), \'3.2\' );

    $adminurl = strtolower(admin_url());
    $referer = strtolower(wp_get_referer());
    $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
    if ( !$result && !(-1 == $action /* skip this: && strpos($referer, $adminurl) === 0 */) ) {
        wp_nonce_ays($action);
        die();
    }
    do_action(\'check_admin_referer\', $action, $result);
    return $result;
}
这实现了标准的nonce检查,但跳过了referer部分。如果它解决了错误消息,我们就已经隔离了问题,并可以努力实现永久修复。

Further reading on the two primary types of errors (这是错误的,权限不足)。

SO网友:JJ Rohrer

我在实现“on\\u激活”代码时遇到了这个问题,需要在开发过程中查看输出。嗯,这是一个很大的“不”字,即使有“退出”的声明,wordpress(4)也会显示“你确定要这样做吗?”而不是我的垃圾@死亡医生的建议指向了正确的方向,但对我的特殊情况无效。我将以下内容放入我的wp配置中。php

 // =============== FOR DEVELOPMENT ONLY -BEGIN- ================
/* Stop Checking NONCE
Motivation: when trying to see the output in _deactivation, it would show.
*/
function check_admin_referer($action = -1, $query_arg = \'_wpnonce\') { //https://wordpress.stackexchange.com/a/60977/8972
    return true;  // honey badger don\'t care (if I\'m in development)   
}
// =============== FOR DEVELOPMENT ONLY -END- ================
这将基本上杀死一堆其他有用的安全性东西。

顺便说一句,我一直在关注这个样本(https://wordpress.stackexchange.com/a/25979/8972) 通过@kaiser激活插件。

SO网友:Sandra

我发现如果check_admin_referer() 正在使用站点中的某个位置的无效参数调用函数。如果出现此错误并且找不到问题,请检查check_admin_referer() 贯穿主题和插件。

在我为我的主题创建了一个新的管理选项页面之后,我就开始出现这个错误。我添加了一个check_admin_referer() 在新类中,意外地交换了第一个和第二个参数。我没有从类本身得到任何错误消息,但它神秘地开始影响选项和配置文件在页面中的保存,这些页面甚至没有加载或调用我创建的类。正在修复我的呼叫check_admin_referer() 立即解决了问题。

SO网友:Ashvin Makvana

我已经在我的网站上修复了这个问题,以便在php中设置bellow值。ini文件

memory_limit = 128M 
upload_max_filesize = 80M
post_max_size = 80M
这可能有用。

结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik