防止第三方函数退出()退出?

时间:2016-08-10 15:59:55

标签: php wordpress

我按顺序调用了几个函数(我无法编辑),但是有些函数会重定向用户,所以我永远不会进入下一个函数。

我正在调用第三方函数调用wp_redirect()我可以阻止它,但接下来的行是exit;我无法弄清楚如何绕过

我希望能够使用ob_函数绕过它,但到目前为止还没有运气。

任何建议,hacky或其他,将非常感谢!

编辑:我有一个想法,我还没有尝试过 - 以某种方式产生新的流程来执行这些任务 - 最好的方法是做什么,等待每一个完成后再继续。

5 个答案:

答案 0 :(得分:2)

我相信有可能获得php解释器的源代码...搞乱退出函数然后重新编译并在Web服务器上安装你的新自定义版本的php ...

答案 1 :(得分:1)

您可以使用runkit_function_redefine。您需要确保可以修改php.ini文件中的内部函数,以便能够更改本机/内部函数。

我认为您需要确保的php.ini设置是runkit.internal_override

我没有测试过这个。

但是,由于exit是一种语言结构,我甚至不确定即使使用上述功能也可以绕过它。

答案 2 :(得分:1)

我怕你不能。可以选择重新定义本机php函数,请参阅runkit_function_redefine

但在评论中它也说:

  

语言结构   (eval,die,exit,isset,unset,echo等)可能会混淆   具有功能,即使使用也无法重命名或重新定义   runkit.internal_override。

答案 3 :(得分:0)

在wp_redirect中引发异常,并使用try-catch语句包装代码,然后检查异常消息是否包含您设置的消息并相应地返回响应,我已将此hack用于大多数插件,包括woocommerce,ultimatemember等...

示例:

ob_start();
try{
    whatever code....
}catch(\Exception $e){
}
echo ob_get_clean();

答案 4 :(得分:-1)

最后,我使用cURL对具有不同GET参数的文件发出三个同步请求。