Category Archives: PHP

Додавання посилання на Ваш сайт в кінець тексту, що з нього копіюється

Чи знаєте ви про те, що копіювання і вставка становить 82% від всіх дій, пов’язаних з поширенням контенту в мережі — приблизно в 4.5 рази більше, ніж використання соціальних кнопок?
Саме така тенденція була виявлена рекламним гігантом 33across / Tynt за допомогою дослідження, виконаного в кінці 2012 року.
Можливо, вам здасться це цікавим. Однак як використовувати цю інформацію на практиці? Як застосувати це до свого сайту?
Чи стикалися ви коли-небудь з такою ситуацією, що при копіюванні частини тексту з веб-сайту і вставки його в поштове повідомлення, в файл, на форум або на свій власний сайт, раптово в самому кінці тексту з’являлася зворотнє посилання, яка вказує на джерело?
Досить цікава можливо, вірно? І, як ви могли подумати, досить продуктивна в плані SEO.
Я знайшов декілька способів це зробити на сайті WordPress.
1 спосіб. Додайте наступний скрипт в файл functions.php вашої теми:

Якщо ви використовуєте різні сервіси для скорочення URL, замініть get_permalink на wp_get_shortlink.
2 спосіб. Спосіб, що був опублікований на http://habrahabr.ru/post/101763/
Ви створюєте файл java-скрипту:

Підключаєте його до вашого сайту. И вставляєте скрипт в текст суйту:

Опції оброблювані плагіном:

Опція Опис
htmlcopytxt Що додавати до бувера, що копіюється. Приймає html
minlen Мінімальна довжина тексту, що виділяється. Приймає int
addcopyfirst Додавати htmlcopytxt в початок буферу обміна або в кінец. true/false

3 спосіб. Спосіб для ледачих 🙂

Згадаємо, чим добрий WordPress ? Тим, що можна робити сайти майже без програмування, бо вже написана велика кількість плагінів. Як виявилось, такий плагін є!
І не один!
Зайдіть в плагіни. Наберіть в пошуку copy. І побачите величезну кількість таких плагінів:

 

Тут Ви побачите плагіни, що забороняють копіювати інформацію, продивлятись код та інше. Також, серед них є той плагін, що нам потрібен: Append Link on Copy.
Подібних плагінів — декілька. Тому, якщо він Вам не сподобається — можете вибрати інший :). І роботи — на пару хвилин…

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Завантаження великих файлів в систему Mantis Bug Tracker

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Останнім часом, коли показують мені помилку, я часто використовую запис відео з екрану процесу, що призводить до помилки. Це значно економить час а також дозволяє проаналізувати якісь моменти, що зразу міг не побачити. Але даже декілька хвилин відео може займати більше 5 Мб, що по замовчуванню виділяються в конфіг-файлі MantisBT, а також можуть перевищувати ліміти, що встановлені в PHP. В таких випадках при пересилці файлу буде видана помилка.

Знімимо ці ліміти.

1. Підвіщуємо ліміти в MantisBT.
Редагуємо файл config_inc.php.

Тут ми переключили режим запису на диск — щоб не завантажувати великі файли в базу даних і навантажувати цим сервер MySQL. Якщо Вы хочете зберігати файли в базі даних, тоді вкажіть режим Database, а також збільшіть ліміти в самому MySQL. Але це я вважаю, що не доцільно…

Увага! Зверніть уваагу, що при переключеннях режимів на інший, раніше завантажені файли, наприклад в базу даних, будуть не доступні.

2. Підвищуємо ліміти в PHP.
Редагуємо файл : /etc/php5/apache2/php.ini

Ліміт встановлює 500 Мегабайт. Ви можете вказати інший ліміт.

3. В мене використовується 2 рівнева архітектура веб-серверу Nginx-Apache2. Тому, необхідно зробити зміни в сервері Nginx.
Редагуємо файл /etc/nginx/nginx.conf:

Автор: Рудюк С . А. https://corp2.net

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Налаштування системи Mantis Bug Tracker

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Безкоштовна веб-орієнтована система MantisBT дозволяє вести облік помилок, контролювати їх виконання а також розраховувати час, що витрачається. Звичайно, щоб дана система працювала так, як потрібно, необхідно налаштувати «під себе» конфігураційний файл.

Сайт виробника системи: http://www.mantisbt.org

Встановлюється дана система без проблем — так, як інші веб-системи. Тому, я не буду описувати, як це робиться.
По замовчуванню, ця система — на англійській мові. Але всі файли з перекладом на багато інших мов встановлюються зразу з системою. Просто, необхідно налаштувати файл.

Редагуємо в корні сайту з даною системою файл config_inc.php. Це файл призначений для налаштувань користувача. Якщо Вам потрібно буде подивитись інші змінні та їх призначення — дивіться файл config_defaults_inc.php.

Ітак, зміст мого файлу config_inc.php:

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

Ось результат наших налаштувань:

mantis1 mantis2mantis3

 

Автор: Рудюк С . А. https://corp2.net

 

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Система обробки помилок MantisBT та пароль адміністратора

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Встановив систему обробки помилок MantisBT. Це безкоштовна веб-орієнтована система. Дуже зручна в роботі.
Встановив. Система не запитала в мене пароль для адміністратора. Пробую ввійти — не входить.
Як виявилось, пароль та ім’я для першого входу в систему:
Логін: administrator
Пароль: root

Автор: Рудюк С . А. https://corp2.net

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

PHP-Barcode — генерация штрих кода

Для тех кто по каким-либо причинам стал изучать проблемы генерации штрих кода (barcode) средствами PHP, презентую open source библиотеку для реализации нескольких популярный стандартов кодирования.

Вообще библиотека существует не только в формате, php скрипта, а еще и в unix & windows source вариантах, которые способны работать с большим количеством штрих кодов, но, напомню, в большинстве случаев используется EAN-13.
Перечислю поддерживаемые стандарты:

EAN-8, EAN-12, EAN-13, UPC, ISBN, Code39, Code128, Code128B, Code128B, RAWCode128, Interleaved25, CBR, MSI, PLS and Code93

Для php библиотеки все немного скромнее — встроены в нее только EAN-13/ISBN, но если скрипт обнаружит распакованную утилиту genbarcode, то сразу становятся доступны все вышеперечисленные стандарты.

Подключение библиотеки происходит в 2 этапа:

  1. Распаковка
  2. Установка пути к библиотеке в файле  php-barcode.php

Строки выглядят примерно так:

$genbarcode_loc="c:\winnt\genbarcode.exe";
$genbarcode_loc="/usr/local/bin/genbarcode"; // используется по умолчанию

Не думаю что стоит описывать процесс установки 3-х скромных файлов, которые в свою очередь адекватно документированы в исходных текстах, тем более что для выполнения операции не требуется каких-либо сверх способностей :-)

Скачать файлы можно с сайта автора http://www.ashberg.de/php-barcode/download/

На этом все!

ЗЫ: думаю будет уместно упомянуть о генерации 2D штрих кода (Semacode), который в отличие от привычных нам «полосок», может хранить существенно больший объем информации, доходящий до нескольких килобайт. Подробнее на этой технологии я остановлюсь позже, а пока можете изучать вопрос самостоятельно, например тут: http://www.splitbrain.org/blog/2007-06/12-php_semacode_encoder

 


Источник: http://rulinux.org/?p=150

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Программирование в командной строке используя PHP

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

Прежде всего, нам нужно проверить, есть ли у нас право на запись в ту самую папку, которая содержит в себе конфиги виртуальных хостов, а обычно для этого нужны root права. Проверить это довольно просто:

  1. $virtual_hosts_dir = «/etc/apache2/sites-available/»;
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4.     echo «You must run this script as root!\n«;
  5.     exit;
  6. }

 

Получение информации из параметров

Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:

  1. if ($argc>1)
  2. {
  3.     for ($i=1; $i<$argc; $i++)
  4.     {
  5.         $option = explode(«=», $argv[$i]);
  6.         switch ($option[0])
  7.         {
  8.             case «-h»:
  9.             case «—add-to-hosts»:
  10.                 $add_to_hosts = true;
  11.             break;
  12.             case «-n»:
  13.             case «—no-add-to-hosts»:
  14.                 $add_to_hosts = false;
  15.             break;
  16.             case «-a»:
  17.             case «—server-alias»:
  18.                 if (isset($option[1]))
  19.                 {
  20.                     $server_alias = $option[1];
  21.                 }
  22.                 else
  23.                 {
  24.                     echo «Wrong option: {$argv[$i]}\n«;
  25.                 }
  26.             break;
  27.             case «-d»:
  28.             case «—document-root»:
  29.                 if (isset($option[1]))
  30.                 {
  31.                     if ($option[1] == «default»)
  32.                     {
  33.                         $document_root = $default_doc_root
  34.                     }
  35.                     else if (is_dir(dirname($option[1])))
  36.                     {
  37.                         $document_root = $option[1];
  38.                     }
  39.                 }
  40.                 else
  41.                 {
  42.                     echo «Wrong option: {$argv[$i]}\n«;
  43.                 }
  44.             break;
  45.             default:
  46.                 if (substr($argv[$i], 1, 1) == ‘-‘)
  47.                 {
  48.                     echo «Unknown option: {$argv[$i]}\n«;
  49.                 }
  50.             break;
  51.         }
  52.     }
  53. }

 

Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:

  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:

  1. $stdin = fopen(«php://stdin», «r»);
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

Продолжаем писать наш скрипт. Пока у нас нет хоть какой-то строки в качестве имени хоста, продолжаем просить пользователя, чтобы он что-то ввел:

  1. while (!$server_alias)
  2. {
  3.     echo «Enter your hostname: «;
  4.     $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3.     echo «Add $server_alias to your /etc/hosts ? (Y/N) [Y]: «;
  4.     $line = trim(fgets(STDIN));
  5.     if ($line == ‘n’ || $line == ‘N’)
  6.     {
  7.         $add_to_hosts = false;
  8.     }
  9.     else
  10.     {
  11.         $add_to_hosts = true;
  12.     }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root)
  2. {
  3.     $default_doc_root = $default_doc_root.‘/’.$server_alias;
  4.     echo «Enter your document root [$default_doc_root]: «;
  5.     $line = trim(fgets(STDIN));
  6.     if ($line && is_dir(dirname($line)))
  7.     {
  8.         $document_root = $line;
  9.     }
  10.     else
  11.     {
  12.         $document_root = $default_doc_root;
  13.     }
  14. }

 

Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:

  1. if (!is_dir($document_root))
  2. {
  3.     mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3.     $hosts = file_get_contents(«/etc/hosts»);
  4.     $hosts .= «127.0.0.1\t$server_alias\n«;
  5.     file_put_contents(«/etc/hosts», $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80> 
  3. ServerAdmin i@bogus.in 
  4. ServerAlias $server_alias
  5.  
  6. DocumentRoot $document_root 
  7. <Directory $document_root> 
  8.     Options Indexes FollowSymLinks MultiViews 
  9.     AllowOverride All 
  10.     Order allow,deny 
  11.     allow from all 
  12. </Directory>
  13.  
  14. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log; 
  15. LogLevel warn 
  16. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  17. </VirtualHost>
  18. HOST;

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents(«/etc/apache2/sites-available/$server_alias«, $host_template);
  2. echo «Apache config for this hostname created successfully! Don’t forget to run a2ensite $server_alias\n«;

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:
chmod +x a2addsite

Использование

Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don’t forget to run a2ensite test.local

так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite —server-alias=test2.local —add-to-hosts —document-root=default
Apache config for this hostname created successfully! Don’t forget to run a2ensite test2.local

Выводы

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

Литература

Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output


Источник: http://habrahabr.ru/post/112146/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Публикация исходного кода в WordPress с помощью модуля SyntaxHighlighter

WordPress.com не позволяет использовать в блоге потенциально опасный код, однако есть возможность публикации исходного кода для просмотра. Мы создали тег, который сохраняет форматирование исходного кода и даже обеспечивает подсветку синтаксиса для некоторых языков. Пример:

1
2
3
4
#button {
    font-weight: bold;
    border: 2px solid #fff;
}

Чтобы получить результат, аналогичный приведенному выше фрагменту, заключите свой код в эти теги:

ваш код

Параметр «language» определяет язык и правила подсветки синтаксиса. Поддерживаются следующие значения:

  • actionscript3
  • bash
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • erlang
  • fsharp
  • diff
  • groovy
  • html
  • javascript
  • java
  • javafx
  • matlab
  • objc
  • perl
  • php
  • text
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • vb
  • xml

Если значение параметра «language» не задано, используется значение «text» (без подсветки синтаксиса).
Код между тегами «code» будет автоматически закодирован для отображения, поэтому вам не стоит беспокоиться об элементах HTML или о чем-либо подобном.

Параметры конфигурации

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

  • autolinks (true/false) — Каждый URL в коде отображается как гиперссылка. Значение по умолчанию: true.
  • collapse (true/false) — Если задано значение true, при загрузке страницы область кода будет свернута. Для того, чтобы развернуть ее, нужно будет кликнуть по ней. Это полезно для больших фрагментов кода. По умолчанию задано значение false.
  • firstline (номер) — Определяет, с какого числа начинается нумерация строк. Значение по умолчанию: 1.
  • gutter (true/false) — Если задано значение false, номера строк будут скрыты. Значение по умолчанию: true.
  • highlight (номера, разделенные запятыми) — Номера строк, которые будут выделены, например, «4,7,19».
  • hmtlscript (true/false) — Если задано значение true, выполняется подсветка HTML/XML-кода. Это полезно при публикации смешанного кода, например, PHP внутри HTML. Работает только с некоторыми языками. Значение по умолчанию: false.
  • light (true/false) — Если задано значение true, номера строк и панель инструментов будут скрыты. Это полезно при размещении фрагмента кода из одной-двух строк. Значение по умолчанию: false.
  • padlinenumbers (true/false/целое число) — Позволяет контролировать дополнение номеров строк нулями. Значение true задает автодополнение, значение false отключает дополнение, число задает фиксированное количество знаков для номеров строк.
  • toolbar (true/false) — Если задано значение false, при наведении на код не будет появляться панель инструментов с кнопками. Значение по умолчанию: true.
  • wraplines (true/false) — Если задано значение false, будет отключен перенос строк. При наличии длинных строк появится горизонтальная полоса прокрутки.
  • title (строка) – заголовок для кода. Может быть полезным в сочетании с параметром collapse.

Примеры использования вышеописанных параметров:

8
9
10
11
Эта строка не выделена.
Эта строка выделена.
Эта строка выделена.
Эта строка не выделена.
0001
Это короткий фрагмент кода с дополнением номеров строк нулями до 4 знаков.
//В этом примере отключен перенос строк. Чтобы прочитать текст полностью, вам придется воспользоваться полосой прокрутки. Кроме того, в данном примере отключена нумерация строк и спрятана панель инструментов.

А это фрагмент кода побольше. Здесь выбран язык PHP и выделена строка номер 12.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>WordPress.com Code Example</title>
</head>
<body>
    <h1>WordPress.com Code Example</h1>
    <p><?php echo 'Hello World!'; ?></p>
    <p>Эта строка выделена.</p>
    <p>Очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень длинная строка.</p>
    <div class="foobar">
        This    is  an
        example of  smart
        tabs.
    </div>
    <p><a href="http://wordpress.com/">WordPress.com</a></p>
</body>
</html>

Благодарности
Для реализации данной возможности используется проект SyntaxHighlighter (автор Alex Gorbatchev). Пользователи WordPress.org могут установить соответствующий плагин.


Источник: https://ru.support.wordpress.com/code/posting-source-code/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)