如何通过http获取joomla版本?

时间:2015-01-22 14:25:50

标签: joomla joomla2.5 joomla3.0 joomla1.5

我看过一个解决方案的截图,只有通过http访问页面才能检测到joomla版本。 例如。解决方案显示了joomla版本的所有3位数字。 例如2.5.28,或1.0.x等等。

所以我想知道如何做到这一点?

3 个答案:

答案 0 :(得分:0)

是的,可以这样做。使用网站的网址附上" /language/en-GB/en-GB.xml" ,然后文档树将成为你可以看到标签中的版本。 Python代码也是如此: - enter image description here

答案 1 :(得分:0)

仅适用于Joomla 2.5和3.x

  • 检查URL中是否缺少http://前缀。如果是,则添加它。请注意,在这种情况下,我没有考虑https://。
  • 然后尝试获取Joomla清单文件并检查是否存在/是否可读。
  • 如果存在则会从<version>标记中获取值。
  • 如果XML文件不可读,那么我写了一个后备来获取TinyMCE版本。同样,它会尝试从<version>标记中读取值。
  • 从现在开始,我花了很长时间浏览每个Joomla版本的发行说明,看看哪个版本有TinyMCE更新。那些做了,我添加到开关块进一步拥有代码。这种方法除了2个之外不会给出确切的版本,但它会给出平均值。我正在考虑检测jQuery版本但后来意识到很多人将核心版本更新到最新版本会导致结果不准确。
  • 如果找不到TinyMCE版本(所以基本上是非Joomla网站),那么该函数将返回Unknown。

注意:此脚本使用CURL,因此请确保在您的服务器上启用它。

class JoomlaVersions
{
    public function getJoomlaVersion($site)
    {
        // Add http prefix if missing
        if (strpos($site,'http://') === false)
        {
            $site = 'http://'.$site;
        }

        // Get the number value from the <version> tag in the XML file
        $dom = new DOMDocument;
        $url = $site . '/administrator/manifests/files/joomla.xml';
        libxml_use_internal_errors(true);

        $exists = $this->XMLexists($url);

        if( $exists )
        {
            $dom->load($url);
            $versions = $dom->getElementsByTagName('version');

            foreach ($versions as $version) 
            {
                return $version->nodeValue;
            }
        }
        else 
        {
            $mce = $this->getTinyMCEversion($site);

            if($mce)
            {
                // Base Joomla version on the TinyMCE version
                switch ($mce)
                {
                    case '3.5.6':
                        $joomla = '3.0.0 - 3.1.6';
                        break;
                    case '4.0.10':
                        $joomla = '3.2.0 - 3.2.1';
                        break;
                    case '4.0.12':
                        $joomla = '3.2.2';
                        break;
                    case '4.0.18':
                        $joomla = '3.2.3 - 3.2.4';
                        break;
                    case '4.0.22':
                        $joomla = '3.3.0';
                        break;
                    case '4.0.28':
                        $joomla = '3.3.1 - 3.3.6';
                        break; 
                    case '4.1.7':
                        $joomla = '3.4.0';
                        break; 
                    default:
                        $joomla = '3.x';
                }

                return $joomla;
            }
            else 
            {
                return 'Unknown';
            }
        }   
    }

    // Get TinyMCE Version 
    private function getTinyMCEversion($site)
    {
        $tinymce = $site . '/plugins/editors/tinymce/tinymce.xml';      
        libxml_use_internal_errors(true);

        $exists = $this->XMLexists($tinymce);

        if( $exists )
        {
            $dom->load($tinymce);
            $vTag = $dom->getElementsByTagName('version');

            foreach ($vTag as $tag) 
            {
                return $tag->nodeValue;
            }
        }
    }

    // Check file exists using CURL
    private function XMLexists($url)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_exec($ch);
        $getinfo = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        return $getinfo;
    }

}

然后像这样调用函数:

$version = new JoomlaVersions;
echo $version->getJoomlaVersion('http://joomla.org');

答案 2 :(得分:-1)

这可能有助于我努力寻找一个检测joomla 3的选项。基本上你可以推断出joomla的版本是访问可访问文件中使用的一些标准标题。

https://www.gavick.com/blog/how-to-check-the-version-of-joomla

  

/templates/system/css/system.css

     

在浏览器中查找并打开该文件并检查此部分:   Joomla源代码Joomla 1.0.x的版本

     

确定网站是否使用Joomla的最简单方法!或不是   查看页面的源代码。

     

的Joomla! 1.0.x站点将具有以下内容:1 Joomla 1.5

     

/ * OpenID图标样式* /

     

并在templates \ system \ css \ template.css文件中,您应该找到:

     
      
  • @copyright版权所有(C)2005 - 2010开源事宜。
  •   
     

在较新版本的Joomla中!此文件不再存在

     

默认情况下,所有Joomla! 1.5.x网站将有以下内容   他们网站的负责人:1 Joomla 1.6 * @version $ Id:   system.css 20196 2011-01-09 02:40:25Z ian $ Joomla 1.7 * @version   $ Id:system.css 21322 2011-05-11 01:10:29Z dextercowley $ Joomla 2.5     * @copyright版权所有(C)2005 - 2012年开源问题

     

比较MooTools(JavaScript Framework)版本的另一种方式   使用media / system / js / mootools-more.js文件:Joomla 1.5     MooTools = {version:'1.12'} media \ system \ js \ mootools.js Joomla 1.6     MooTools.More = {version:“1.3.0.1”Joomla 1.7     MooTools.More = {version:“1.3.2.1”Joomla 2.5.6     MooTools.More = {version:“1.4.0.1”Joomla 3.0 alpha 2     MooTools.More = {版本:” 1.4.0.1“

     

另一种检查Joomla 1.6或Joomla 1.7.x网站的方法是基于的   在它上面比较语言文件中的日期:language / en-GB / en-GB.ini   Joomla 1.5.26#$ Id:en-GB.ini 11391 2009-01-04 13:35:50Z ian $   Joomla 1.6.0; $ Id:zh-CN.ini 20196 2011-01-09 02:40:25Z ian $ Joomla   1.6.5; $ Id:zh-CN.ini 20990 2011-03-18 16:42:30Z infograf768 $ Joomla 1.7.1; $ Id:zh-CN.ini 20990 2011-03-18 16:42:30Z infograf768   $ Joomla 1.7.3; $ Id:en-GB.ini 22183 2011-09-30 09:04:32Z   infograf768 $ Joomla 1.7.5; $ Id:zh-CN.ini 22183 2011-09-30   09:04:32Z infograf768 $从Joomla 2.5.0到Joomla 2.5.4

     

2.5.0

     

您将在language / en-GB / en-GB.xml文件中看到。 Joomla 2.5.5 Joomla   2.5.6

     

2.5.5

     

您将在language / en-GB / en-GB.xml文件中看到。