Posts Tagged ‘site verification’

Скрипт верификации сайта

Posted in Development, PHP, Tips And Tricks on June 21st, 2009 by Yaroslav Vorozhko – 8 Comments

Приветствую!
Предлагаю на обсуждения простой скрипт проверки принадлежности (верификации) сайта, его владельцу.

Предполагается, что владелец сайта поместил специальный meta тег в head секцию на корневой странице сайта, т.е. на home page.
Формат meta тега следующий:
<meta name="vf_key" content="29693426cfd334d8287783b49217e64f"/>

Задача определить наличие заданного meta тэга в заголовке документа, исключая весь остальной документ.

Функция верификации следующая:

PHP:
  1. /**
  2. * Function return true if verfication is successed
  3. *@param $url string - it is valid url address
  4. *@param $metaValue - string it is special code which placed as content for verification meta tag
  5. **/
  6.         public function verifyMetaTag($url, $metaValue)
  7.     {   
  8.         // we know what $url is valid url
  9.  
  10.                 //get html of the page with Zend http client
  11.         $client = new Zend_Http_Client($url, array(
  12.             'maxredirects' => 0,
  13.             'timeout'      => 30)
  14.         );
  15.         $response = $client->request();
  16.                 if (!$response){
  17.                        return false;
  18.                 }
  19.        
  20.         $html = $response->getBody();
  21.        
  22.         $headPos = strpos($html, '</head>');
  23.         $metaPos = strpos($html, $metaValue);
  24.  
  25.                 //close head section must be below our meta tag
  26.         if ($metaPos> $headPos){
  27.             return false;
  28.         }
  29.        
  30.         $htmlHead = substr($html, 0, $headPos);
  31.  
  32.                 //grab all meta tags in head section into array
  33.         preg_match_all("#<meta(.*)>#", $htmlHead, $matches);
  34.        
  35.                 //checking all meta tags on special key and value pairs
  36.         foreach ($matches[1] as $meta){
  37.                      //meta tag must have key "vf_key" and value "$metaValue"
  38.             if (strpos($meta, 'vf_key') && strpos($meta, $metaValue)){
  39.                 return true;
  40.             }
  41.         }
  42.         return false;
  43.     }

Есть ли у этого метода недостатки или может есть более простой вариант?