Все о web разработке на xdan.ru
  • Регистрация
  • Войти
         

Menu
  • Главнаявсе о web разработке
  • CopySiteСервис
      • Новости сервиса CopySite
  • Категориивсе материалы
      • JavaScript
          • jQuery
              • Обзор плагинов
      • PHP
          • Yii
          • Laravel
      • Новости Web технологий
      • Soft
          • Opera
      • Парсеры
      • CMS
          • Joomla
              • Документация для разработчиков Joomla
          • Danneo
          • UMI
          • Drupal
      • Социальные сети
      • Из жизни
      • Политика
      • Мои разработки
          • Конструктор Yandex карт
      • Новости сайта
      • SEO
      • Защита сайта
      • Администрирование WEB сервера
      • Монетизация сайта
      • web разработка
      • Железо
      • Хостинг
      • Игры
      • Про киномнение о кино
      • Нативное программирование
      • Видео
  • Магазинкупить продукты сайта
  • Joomlaвсе для joomla
      • Плагин CTRL+S быстрое сохранение материала в Joomla
          • Скачать плагин CTRL+S
      • Создаем собственную SEF систему для Joomla
      • Как написать Joomla плагин для xmap
      • Модуль Конструктор Яндекс Карт для Joomla
          • Скачать модуль Конструктор Янлекс Карт для Joomla
      • Компонент Яндекс Карты для Joomla
          • Документация компонента Яндекс Карты для Joomla
          • Демонстрация - лицевая часть
          • Демонстрация - администратор (demo,demo)
          • Уроки
      • Менеджер перенаправлений Joomla
  • Наши разработкиавторские разработки
      • HTML Map generator
      • liveadd
      • Конструктор Яндекс Карт
      • Онлайн синонимайзер текстов
      • Joomla Module Generator
      • Joomla плагин CTRL+S AutoSave
      • Лучший DateTimePicker
      • miniMySQLAdmin - легковесная альтернатива phpMyAdmin
      • Joomla модуль Конструктор Яндекс Карт
      • Скачать копию сайта
  • Конструктор Yandex картгенератор кода для Яндекс карт

Как написать свой фреймворк на php. Урок 2

Информация о материале
Категория: PHP
Опубликовано: 08 декабря 2014
Просмотров: 12855
  • php
  • native php
  • фреймворк
  • vanila.php
  • ideal
  • разработка фреймворка

В прошлой статье мы разобрали структуру фреймворка, но не его реализацию. Для того чтобы фреймворк начал функционаровать, нам потребуется его доработать. Для начала подключим файл конфигурацию. Мы обозначили файл, как config.php, но никак его не использовали.

По опыту разработки сразу оговорюсь, удобно использовать два файла конфигурации: первый для общих настроек - название сайта, адрес домена, время жизни куков, и второй для настроек подключения к БД. Это в первую очередь качается разработки на фреймворке. Так как для такой системы важно быстро развернуть ее на локальном компьютере и зачем перенести на сервер. При таком переносе, один из конфигов будет общим, а второй будет заполнен лишь единожды для каждого сервера. Поэтому определим два файла config.php и config.db.php

Структура этих файлов должна быть как можно проще. Идеальный вариант - ini файлы. Но для них нужно писать отдельные парсеры и они доступны из вне. Поэтому не будем изобретать велосипед, а сделаем простой php ассоциативный массив с парами ключ-значение.

Рассказать друзьям
Подробнее... 17 комментариев

Yii сниппеты

Информация о материале
Категория: Yii
Опубликовано: 17 июля 2014
Просмотров: 10010

Статьи

Отличная статья по настройке таблицы

ActiveRecords запросы в Yii2

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, узнать который можно к примеру тут 

Рассказать друзьям
Подробнее... 2 комментария

PHP Сниппеты

Информация о материале
Категория: PHP
Опубликовано: 18 июня 2014
Просмотров: 10206
  • php
  • snippets
  • reflectionfunction
  • getfilename

Получить реальный 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
Опубликовано: 18 июня 2014
Просмотров: 10271
  • joomla
  • params
  • get params module

Этой статьей открываю новый раздел сайта. В нем будут перечислены все мои находки, которые могут послужить кому-то еще. Найдены в англоязычных источниках

Рассказать друзьям
Подробнее... 2 комментария

Как написать Joomla плагин для xmap

Информация о материале
Категория: Joomla
Опубликовано: 28 мая 2014
Просмотров: 9508
  • joomla
  • plugin
  • xmap
  • карта сайта
  • sitemap
  • joomla plugin

Пишем плагин для joomla  xmapРанее на страницах блока была серия статей о написании своего компонента для популярной среди непрофессиональных разработчиков системы Joomla. Времени прошло достаточно, и вот ваш компонент уже оброс данными. Данных много, ведь помимо прочего мы еще подключили к компонентe парсер, для быстрого наполнения сайта. Однако поисковики очень не охотно индексируют ваш контент.

Информации в сети так много и обновляется она так часто, что поисковые системы просто не успевают проверять, обновилась ли ваша главная страница, или того хуже вложенная. В результате информация на сайте есть, но поисковик про нее узнает в последнюю очередь.

Для таких случаев придумали sitemap. Это такая xml в которой описаны все ссылки сайта, которые необходимо проиндексировать, и у каждой есть поле, в котором написано, когда контент по этой ссылке последний раз обновлялся.

Поисковику достаточно раз в день проверять этот файл индексировать лишь измененные страницы. 

Среди joomla компонентов, которые создают sitemap, одним из лидеров дефакто является xmap. Сам xmap выводит в sitemap только ссылки размещенные в меню. Это не совсем удобно, когда мы хотим, чтобы в sitemap появились ссылки из нашего компонента. На помощь приходят плагины xmap. У этого компонента в загашнике есть несколько плагинов для популярных компонентов (k2,weblinks и т.д.) есть плагин и для стандартных материалов joomla.

Рассказать друзьям
Подробнее... Добавить комментарий
  1. miniMySQLAdmin - легковесная альтернатива phpMyAdmin
  2. Как в php конвертировать BB коды в HTML
  3. Рисуем JavaScript с помощью Raphaël
  4. Как написать универсальный парсер сайтов за 1 час

Страница 2 из 11

  • В начало
  • Назад
  • 1
  • 2
  • 3
  • 4
  • ...
  • 6
  • 7
  • 8
  • 9
  • 10
  • Вперед
  • В конец

ПЛАТНОЕ РАЗМЕЩЕНИЕ СТАТЕЙ НА САЙТЕ

Размещение готовой статьи – 350 р.

Написание + размещение статьи (до 2000 слов) – 550 р.
 
Оформить заказ: hr.xdan@yandex.ru

Полезные статьи

  • Joomla сниппеты
  • Joomla ZOO сниппеты
  • PHP сниппеты
  • Yii сниппеты
  • SSH сниппеты и защита сайта
  • CSS сниппеты
  • JavaScript сниппеты

Популярные статьи

  • Учимся парсить сайты с библиотекой PHP Simple HTML DOM Parser 2011-03-18 12:33:20

  • Примеры работы с ajax на jQuery 2011-03-01 21:04:00

  • Как написать универсальный парсер сайтов за 1 час 2014-04-25 09:36:58

  • Работа с файлами в JavaScript, Часть 1: Основы 2012-06-25 22:02:14

  • Авторизация на сайте при помощи curl php 2012-07-19 02:33:00

Авторизация через сервисы

         

  • Забыли пароль?
  • Забыли логин?
  • Регистрация

Категории

  • JavaScript
  • PHP
  • Новости Web технологий
  • Soft
  • Парсеры
  • CMS
  • Социальные сети
  • Из жизни
  • Политика
  • Мои разработки
  • Новости сайта
  • SEO
  • Защита сайта
  • Администрирование WEB сервера
  • Монетизация сайта
  • web разработка
  • Железо
  • Хостинг
  • Игры
  • Про кино
  • Нативное программирование
  • Видео
Как скопировать любой сайт?

© 2021 Все о web разработке на xdan.ru

  • О сайте
  • Об авторе
Go Top