Archive for the ‘Tips And Tricks’ Category
Авто редирект из http в https в Zend Framework
Written by Yaroslav Vorozhko on July 1, 2009 – 1:32 pm -Привет,
Следующий Helper решает проблему редиректа из http страници на https.
Скажем надо перейти от http://mysite.com/action/param/ на https://mysite.com/action/param/
-
class My_Helper_SslSwitch extends Zend_Controller_Action_Helper_Abstract
-
{
-
public function direct()
-
{
-
$request = $this->getRequest();
-
$url = 'https://'
-
. $_SERVER['HTTP_HOST']
-
. $request->getRequestUri();
-
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
-
$redirector->gotoUrl($url);
-
}
-
}
-
}
Автор хелпера Matthew Weier O'Phinney
Далее в bootstrap добавляем путь к Helper в include_path
и вызываем его, таким образом мы переводим весь сайт на использование https.
-
Zend_Controller_Action_HelperBroker::addPrefix('My_Helper');
-
$ssl = new My_Helper_SslSwitch();
-
$ssl->direct();
Если же вам надо включить SSL только для определенных контроллеров, то вы можете поместить следующий код в preDispath() метод контроллеров.
-
$this->_helper->sslSwith();
В данном случае мы используем объект _helper для создания объекта sslSwith и вызова метода direct().
Note: Метод direct() вызыватеся автоматически для всех Action Helpers.
Tags: Action Helper, HTTPS, SSL, Zend Framework
Posted in Development, PHP, Tips And Tricks, ZendFramework | No Comments »
Скрипт верификации сайта
Written by Yaroslav Vorozhko on June 21, 2009 – 2:00 pm -Приветствую!
Предлагаю на обсуждения простой скрипт проверки принадлежности (верификации) сайта, его владельцу.
Предполагается, что владелец сайта поместил специальный meta тег в head секцию на корневой странице сайта, т.е. на home page.
Формат meta тега следующий:
<meta name="vf_key" content="29693426cfd334d8287783b49217e64f"/>
Задача определить наличие заданного meta тэга в заголовке документа, исключая весь остальной документ.
Функция верификации следующая:
-
/**
-
* Function return true if verfication is successed
-
*@param $url string - it is valid url address
-
*@param $metaValue - string it is special code which placed as content for verification meta tag
-
**/
-
public function verifyMetaTag($url, $metaValue)
-
{
-
// we know what $url is valid url
-
-
//get html of the page with Zend http client
-
'maxredirects' => 0,
-
'timeout' => 30)
-
);
-
$response = $client->request();
-
if (!$response){
-
return false;
-
}
-
-
$html = $response->getBody();
-
-
-
//close head section must be below our meta tag
-
if ($metaPos> $headPos){
-
return false;
-
}
-
-
-
//grab all meta tags in head section into array
-
-
//checking all meta tags on special key and value pairs
-
foreach ($matches[1] as $meta){
-
//meta tag must have key "vf_key" and value "$metaValue"
-
return true;
-
}
-
}
-
return false;
-
}
Есть ли у этого метода недостатки или может есть более простой вариант?
Tags: page verification, site verification, url verification
Posted in Development, PHP, Tips And Tricks | 8 Comments »
Проверка существования таблицы в базе данных с ZendFramework
Written by Yaroslav Vorozhko on April 19, 2009 – 12:25 pm -Существует несколько способов проверить наличие таблицы в базе данных с помощью zendframework.
Первый и самый простой это использовать функцию listTables из Zend_db, но у этой функции есть ограничение, она получает список таблиц только текущей базы данных.
Например вам надо узнать существует ли таблица my_table в подключении к текущей базе данных:
$db = $this->getAdapter();
$tables = $db->listTables();
if (in_array('my_table', $table)){
//todo something with table
}
listTables() возвращает массив имен всех таблиц в текущей базе данных.
И второй метод является более универсальным, так как с его помощью можно проверить наличие таблицы в любой базе данных, если текущие права на подключение позволяют вам просматривать эту базу данных.
Пример:
$db = $this->getAdapter();
$sql = "show tables from any_db like 'my_table' ";
if ( $db->fetchOne($sql) ){
//todo something with table
}
fetchOne() вернет строку с именем таблицы, если таблица будет найдена, если ничего не будет найдено, то будет возвращена пустая строка.
С помощью приема с show tables можно проверять на существование одной и более таблиц, что делает этот прием более универсальным.
Tags: MySQL, ZendFramework
Posted in MySQL, Tips And Tricks, ZendFramework | No Comments »
