Yii сниппеты
- Информация о материале
- Категория: Yii
- Просмотров: 12819
Статьи
Отличная статья по настройке таблицы
Action по умолчанию в Yii контроллере
В самом коде контроллера добавляем поле
public $defaultAction = 'test';
Язык сообщений об ошибках в Yii
В файле config/main.php добавляем в массив
'language' => 'ru',
Почему gii возвращает 403
По умолчанию с gii обычно работают только на локальной машине. Когда вы разкомментировали эти строки
'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'12345', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters' => array('127.0.0.1', '92.50.156.138'), // EDIT TO TASTE ),
надо добавить в массив
ipFilters
свой ip, узнать который можно к примеру тут
PHP Сниппеты
- Информация о материале
- Категория: PHP
- Просмотров: 13269
Получить реальный IP пользователя
function get_ip() { //Just get the headers if we can or else use the SERVER global if ( function_exists( 'apache_request_headers' ) ) { $headers = apache_request_headers(); } else { $headers = $_SERVER; } //Get the forwarded IP if it exists if ( array_key_exists( 'X-Forwarded-For', $headers ) && filter_var( $headers['X-Forwarded-For'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) { $the_ip = $headers['X-Forwarded-For']; } elseif (array_key_exists('HTTP_X_FORWARDED_FOR', $headers ) && filter_var($headers['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { $the_ip = $headers['HTTP_X_FORWARDED_FOR']; } else { $the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ); } return $the_ip; }
Отправить POST запрос на PHP
function postRequest($url, $post = 0){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url ); // отправляем на curl_setopt($ch, CURLOPT_HEADER, 0); // пустые заголовки curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвратить то что вернул сервер curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // следовать за редиректами curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);// таймаут4 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); curl_setopt($ch, CURLOPT_POST, $post!==0 ); // использовать данные в post if($post) curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $data = curl_exec($ch); curl_close($ch); return $data; }
Пользоваться так
$data = postRequest('https://www.google.com/recaptcha/api/siteverify', array('secret'=>'','response'=>'', 'remoteip'=>''));
Как найти, где находится функция php
$reflFunc = new ReflectionFunction('function_name'); print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
Как найти, где находится класс в php
идентично верхнему коду, можно найти и местоположение любого не встроенного класса в php
$ref = new ReflectionClass('Application'); print $ref->getFileName() . ':' . $ref->getStartLine();
Как получить все методы у объекта или класса в php
print_r(get_class_methods($obj));
Как удалить папку с файлами или почистить папку с файлами
function cleanDirectory($dir, $remove = false) { if ($objs = glob($dir."/*")) { foreach($objs as $obj) { is_dir($obj) ? cleanDirectory($obj, true) : unlink($obj); } } if ($remove) { rmdir($dir); } }
пользуемся так
Если нужно просто отчистить директорию то запускаем без второго параметра, если после очистки нужно еще и удалить ее то вторым параметром подаем true
cleanDirectory('/home/www/files/images'); // очистка cleanDirectory('/home/www/files/images', true); // удаление
Как отдать на загрузку какой-либо файл на сервере с помощью php
универсальный загрузчик выглядит так
function download ($file) { if (!empty($file) and file_exists($file) and is_file($file)) { if (ob_get_level()) { ob_end_clean(); } header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); if ($fd = fopen($file, 'rb')) { while (!feof($fd)) { print fread($fd, 1024); } fclose($fd); } } else { header('HTTP/1.0 404 Not Found'); echo 'File not found'; } exit(); }
Сгенерировать строку из случайных символов
Часто надо сгененрировать случайную строку для соли или еще для чего
function generateHash ($length = 8){ $password = ""; $possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ"; $maxlength = strlen($possible); if ($length > $maxlength) { $length = $maxlength; } $i = 0; while ($i < $length) { $char = substr($possible, mt_rand(0, $maxlength-1), 1); if (!strstr($password, $char)) { $password .= $char; $i++; } } return $password; }
универсальный загрузчик выглядит так
Узнать, пришел ли запрос через AJAX
Этот способ работает только с jQuery. Она при AJAX запросе добавляет заголовок HTTP_X_REQUESTED_WITH=XMLHttpRequest
в запрос
Поэтому, можно написать на сервере функцию проверки
function isAjax(){ return isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; }
Joomla сниппеты
- Информация о материале
- Категория: Joomla
- Просмотров: 13144
Этой статьей открываю новый раздел сайта. В нем будут перечислены все мои находки, которые могут послужить кому-то еще. Найдены в англоязычных источниках
Как написать Joomla плагин для xmap
- Информация о материале
- Категория: Joomla
- Просмотров: 12109
Ранее на страницах блока была серия статей о написании своего компонента для популярной среди непрофессиональных разработчиков системы Joomla. Времени прошло достаточно, и вот ваш компонент уже оброс данными. Данных много, ведь помимо прочего мы еще подключили к компонентe парсер, для быстрого наполнения сайта. Однако поисковики очень не охотно индексируют ваш контент.
Информации в сети так много и обновляется она так часто, что поисковые системы просто не успевают проверять, обновилась ли ваша главная страница, или того хуже вложенная. В результате информация на сайте есть, но поисковик про нее узнает в последнюю очередь.
Для таких случаев придумали sitemap. Это такая xml в которой описаны все ссылки сайта, которые необходимо проиндексировать, и у каждой есть поле, в котором написано, когда контент по этой ссылке последний раз обновлялся.
Поисковику достаточно раз в день проверять этот файл индексировать лишь измененные страницы.
Среди joomla компонентов, которые создают sitemap, одним из лидеров дефакто является xmap. Сам xmap выводит в sitemap только ссылки размещенные в меню. Это не совсем удобно, когда мы хотим, чтобы в sitemap появились ссылки из нашего компонента. На помощь приходят плагины xmap. У этого компонента в загашнике есть несколько плагинов для популярных компонентов (k2,weblinks и т.д.) есть плагин и для стандартных материалов joomla.
miniMySQLAdmin - легковесная альтернатива phpMyAdmin
- Информация о материале
- Категория: Мои проекты
- Просмотров: 13196
miniMySQLAdmin
miniMySQLAdmin это такой mini аналог phpMyAdmin. Функционал урезан, и некоторые операции без знания SQL не сделать.
Вы можете
скачать исходную версию
и дополнить ее, либо скачать лишь
один файл
и пользоваться только им
Также вы можете пощупать программу на
демо данных
Разработчики сайтов ежедневно работают с phpMyAdmin. Эта программа единолично занимает нишу администрирования MySQL баз данных. Есть множество десктопных аналогов, но когда доступ надо предоставить через web, тут у phpMyAdmin конкуренции нет.
Единственный существенный минус phpMyAdmin - размер. Мультиязычность, поддержка всех возможных кодировок, проработанность всех необходимых операций, практически без знания SQL - все это требует места.
Когда нужно быстро исправить пару строк в таблице, а заказчик дал только ftp доступ, заливать все это на сервер в распакованном виде проблематично.
Для разовых правок базы данных мной была разработана miniMySQLAdmin. Все, что нужно, в ней содержится в одном файле, размером 300кб.