<small id='zIBAs'></small><noframes id='zIBAs'>

    • <bdo id='zIBAs'></bdo><ul id='zIBAs'></ul>
    <legend id='zIBAs'><style id='zIBAs'><dir id='zIBAs'><q id='zIBAs'></q></dir></style></legend>

    1. <i id='zIBAs'><tr id='zIBAs'><dt id='zIBAs'><q id='zIBAs'><span id='zIBAs'><b id='zIBAs'><form id='zIBAs'><ins id='zIBAs'></ins><ul id='zIBAs'></ul><sub id='zIBAs'></sub></form><legend id='zIBAs'></legend><bdo id='zIBAs'><pre id='zIBAs'><center id='zIBAs'></center></pre></bdo></b><th id='zIBAs'></th></span></q></dt></tr></i><div id='zIBAs'><tfoot id='zIBAs'></tfoot><dl id='zIBAs'><fieldset id='zIBAs'></fieldset></dl></div>
      <tfoot id='zIBAs'></tfoot>

      curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&amp;$thi

      时间:2023-10-11
          <i id='B26AV'><tr id='B26AV'><dt id='B26AV'><q id='B26AV'><span id='B26AV'><b id='B26AV'><form id='B26AV'><ins id='B26AV'></ins><ul id='B26AV'></ul><sub id='B26AV'></sub></form><legend id='B26AV'></legend><bdo id='B26AV'><pre id='B26AV'><center id='B26AV'></center></pre></bdo></b><th id='B26AV'></th></span></q></dt></tr></i><div id='B26AV'><tfoot id='B26AV'></tfoot><dl id='B26AV'><fieldset id='B26AV'></fieldset></dl></div>
            <bdo id='B26AV'></bdo><ul id='B26AV'></ul>
                <tfoot id='B26AV'></tfoot>

                <legend id='B26AV'><style id='B26AV'><dir id='B26AV'><q id='B26AV'></q></dir></style></legend>
              • <small id='B26AV'></small><noframes id='B26AV'>

                  <tbody id='B26AV'></tbody>
              • 本文介绍了curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&amp;$this,'readHeader')) 不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我有这个包装器可以从 Joomla 中加载一个 symfony 项目

                I have this wrapper to load a symfony project from within Joomla

                class NZGBCComponentHelper {
                    function requestAndFollow($path = '') {
                        $c = 0;$first = 1;$httpcode = 0;
                        $uri = JRequest::getVar('uri');
                        while ($c <= 4 && ($first || $httpcode == 302)){
                            $first = 0;
                            $finalSfUrl = NZGBCComponentHelper::buildRequestUri($uri, $path);
                
                            $ch = curl_init($finalSfUrl);
                
                            if(JRequest::getMethod() == 'POST' && $httpcode != 302){
                                curl_setopt($ch, CURLOPT_POST, 1);
                                $postThrough = array_merge(JRequest::get($_POST),array('_csrf_token' => $_POST['_csrf_token']));
                                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postThrough));
                            }
                
                            // Get sf content
                            curl_setopt($ch, CURLOPT_REFERER, JURI::getInstance()->root().$path);
                            curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'readHeader');
                            curl_setopt($ch, CURLOPT_HEADER, 1);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
                            curl_setopt($ch, CURLOPT_COOKIE, 'symfony='.$_COOKIE['symfony']);
                
                            $return = curl_exec($ch);
                            $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                
                
                            if (!$return){
                                $error = curl_error($ch);
                            }
                
                            if($this->headers['Set-Cookie']){
                                JResponse::setHeader('Set-Cookie', $mainframe->sym_headers['Set-Cookie']);
                            }
                            if ($httpcode >= 400){
                                $return = "There was an <!--$finalSfUrl-->  error ";
                                mail ('jd@automatem.co.nz', 'symfony wrapper error',
                                $finalSfUrl."
                ".
                                $httpcode."
                ".
                                $return
                                );
                
                            }else if ($httpcode == 302){
                                $query = parse_url(trim($mainframe->sym_headers['Location']), PHP_URL_QUERY);
                                parse_str($query);
                                parse_str($uri);
                                if ($outside == 'true'){
                                    JApplication::redirect(trim(urldecode($uri)));
                                }
                            }
                            curl_close($ch);
                            $c++;
                        }
                        return $return;
                
                    }
                    }
                
                    if (!function_exists('readHeader')){
                    function readHeader($ch, $header){
                
                        $mainframe =& JFactory::getApplication();
                        if($pos = strpos($header, ':')){
                            $mainframe->sym_headers[substr($header, 0, $pos)] = substr(strstr($header, ':'), 1);
                        }
                
                        return strlen($header);
                    }
                }
                

                requestAndFollow 是静态调用的.如何引用 readHeader() 而不是将其放入全局函数空间.我试过了:

                requestAndFollow is statically called. How can I refer to readHeader() instead of putting it into the global function space. I tried:

                curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this,'readHeader'));//didn't expect this to work - no $this when statically called
                
                
                curl_setopt($ch, CURLOPT_HEADERFUNCTION, array('NZGBCComponentHelper','readHeader'));
                
                
                curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(self,'readHeader'));
                

                推荐答案

                看来这在

                • libcurl 7.19.7、Ubuntu 10.10、PHP 5.3.2

                但不在

                • Debian Lenny 上的 libcurl 7.18.2,PHP 5.2.6

                两个版本的工作解决方法是将头函数放在全局空间中

                A working workaround on both versions is to put the header function in the global space

                curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'readHeader');
                

                这篇关于curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&amp;$this,'readHeader')) 不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:Joomla 登录重定向回页面到上一页 下一篇:如何在 Joomla! 中插入 HTML 标签!模块标题?

                相关文章

                <tfoot id='uV2TN'></tfoot>
                <legend id='uV2TN'><style id='uV2TN'><dir id='uV2TN'><q id='uV2TN'></q></dir></style></legend>
                1. <small id='uV2TN'></small><noframes id='uV2TN'>

                  <i id='uV2TN'><tr id='uV2TN'><dt id='uV2TN'><q id='uV2TN'><span id='uV2TN'><b id='uV2TN'><form id='uV2TN'><ins id='uV2TN'></ins><ul id='uV2TN'></ul><sub id='uV2TN'></sub></form><legend id='uV2TN'></legend><bdo id='uV2TN'><pre id='uV2TN'><center id='uV2TN'></center></pre></bdo></b><th id='uV2TN'></th></span></q></dt></tr></i><div id='uV2TN'><tfoot id='uV2TN'></tfoot><dl id='uV2TN'><fieldset id='uV2TN'></fieldset></dl></div>
                    • <bdo id='uV2TN'></bdo><ul id='uV2TN'></ul>