Archive for the ‘ZendFramework’ 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 »
Проверка существования таблицы в базе данных с 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 »
ZF Error: Can’t create/write to file
Written by Yaroslav Vorozhko on February 16, 2009 – 10:48 am -Рассмотрим ситуацию когда вы получаете следующее сообщение об ошибке от ZendFramework.
exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY000]:
General error: 1 Can't create/write to file
'C:\WINDOWS\TEMP\#sql_c48_0.MYI' (Errcode: 13)' in
C:\...\Zend\Db\Statement\Pdo.php:227
Errorcode 13: - это сообщение об ошибке от ОС, что нет прав на запись в каталог или файл.
Если вы получаете это сообщение каждый раз при выполнении SQL, то первое и самое вероятное, проверьте права на чтение/запись во временный каталог установленный в вашем php.ini.
В данном случае C:\WINDOWS\TEMP\ .
Иногда такая ошибка случается один раз из 100 запусков SQL команд, тогда посмотрите не блокирует ли другая программа этот каталог, это может быть например антивирус или другая программа, которая интенсивно работает с файловой системой.
Надеюсь это вам помогло, если нет, тогда жду комментариев.
Tags: error, SQL Error, ZendFramework
Posted in Tips And Tricks, ZendFramework | No Comments »
