admin

Лют 172012
 

Работа с переменной $_SERVER

$_SERVER -- ($HTTP_SERVER_VARS [устаревшее]) — Информация о сервере и среде исполнения
   Переменная $_SERVER - это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером. Нет гарантии, что каждый веб-сервер предоставит любую из них; сервер может опустить некоторые из них или предоставить другие, не указанные здесь.
   Переменная $HTTP_SERVER_VARS содержит ту же начальную информацию, но она не суперглобальная. (Заметьте, что $HTTP_SERVER_VARS и $_SERVER являются разными переменными, так что PHP обрабатывает их соответственно)
'PHP_SELF' - Имя файла скрипта, который сейчас выполняется, относительно корня документов. Например,$_SERVER['PHP_SELF'] в скрипте по адресу http://example.com/test.php/foo.bar будет /test.php/foo.bar. Константа __FILE__ содержит полный путь и имя файла текущего (то есть подключенного) файла. Если PHP запущен в командной строке, эта переменная содержит имя скрипта, начиная с PHP 4.3.0. Раньше она была недоступна.
'argv' - Массив агрументов, переданных скрипту. Когда скрипт запущен в командой строке, это дает C-подобный доступ к параметрам командной строки. Когда вызывается через метод GET, этот массив будет содержать строку запроса.
'argc' - Содержит количество параметров, переданных скрипту (если запуск произведен в командной строке).
'GATEWAY_INTERFACE' - Содержит используемую сервером версию спецификации CGI; к примеру'CGI/1.1'.
'SERVER_ADDR' - IP адрес сервера, на котором выполняется текущий скрипт.
'SERVER_NAME' - Имя хоста, на котором выполняется текущий скрипт. Если скрипт выполняется на виртуальном хосте, здесь будет содержатся имя, определенное для этого виртуального хоста.
'SERVER_SOFTWARE' - Строка идентификации сервера, указанная в заголовках, когда происходит ответ на запрос.
'SERVER_PROTOCOL' - Имя и версия информационного протокола, через который была запрошена страница; к примеру 'HTTP/1.0';
'REQUEST_METHOD' - Какой метод был использован для запроса страницы; к примеру 'GET', 'HEAD', 'POST', 'PUT'. Замечание: PHP скрипт завершается после посылки заголовков (тоесть после того, как осуществляет любой вывод без буферизации вывода), если запрос был осуществлен методом HEAD.
'REQUEST_TIME' - Временная метка начала запроса. Доступна, начиная с PHP 5.1.0. Начиная с PHP 5.4.0, имеет тип float с указанием микросекунд.
'QUERY_STRING' - Строка запросов, если есть, с помощью которой была получена страница.
'DOCUMENT_ROOT' - Директория корня документов, в которой выполняется текущий скрипт, в точности та, которая указана в конфигурационном файле сервера.
'HTTP_ACCEPT' - Содержимое заголовка Accept: из текущего запроса, если он есть.
'HTTP_ACCEPT_CHARSET' - Содержимое заголовка Accept-Charset: из текущего запроса, если он есть. Например: 'iso-8859-1,*,utf-8'.
'HTTP_ACCEPT_ENCODING' - Содержимое заголовка Accept-Encoding: из текущего запроса, если он есть. Например: 'gzip'.
'HTTP_ACCEPT_LANGUAGE' - Содержимое заголовка Accept-Language: из текущего запроса, если он есть. Например: 'en'
'HTTP_CONNECTION' - Содержимое заголовка Connection: из текущего запроса, если он есть. Например: 'Keep-Alive'
'HTTP_HOST' - Содержимое заголовка Host: из текущего запроса, если он есть.
'HTTP_REFERER' - Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять
'HTTP_USER_AGENT' - Содержимое заголовка User-Agent: из текущего запроса, если он есть. Эта строка содержит обозначение браузера, которым пользователь запросил данную страницу. Типичным примером является строка: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Среди прочего, вы можете использовать это значение с функцией get_browser() чтобы адаптировать вывод вашей страницы к возможностям браузера пользователя
'HTTPS' - Принимает непустое значение, если запрос был произведен через протокол HTTPS. Замечание: Обратите внимание, что при использовании ISAPI с IIS значение будет off, если запрос не был произведен через протокол HTTPS.
'REMOTE_ADDR' - IP-адрес, с которого пользователь просматривает текущую страницу.
'REMOTE_HOST' - Удаленный хост, с которого пользователь просматривает текущую страницу. Обратный просмотр DNS базируется на значении переменной REMOTE_ADDR. Замечание: Ваш веб-сервер должен быть настроен, чтобы создавать эту переменную. Для примера, в Apache вам необходимо присутствие директивы HostnameLookups On в файле httpd.conf, чтобы эта переменная создавалась. См. также gethostbyaddr().
'REMOTE_PORT' - Порт на удаленной машине, который используется для связи с веб-сервером.
'REMOTE_USER' - Аутентифицированный пользователь.
'REDIRECT_REMOTE_USER' - Аутентифицированный пользователь, если запрос был перенаправлен изнутри.
'SCRIPT_FILENAME' - Абсолютный путь к скрипту, который в данный момент исполняется. Замечание:Если скрипт запускается в коммандной строке (CLI), используя относительный путь, такой как file.php или ../file.php, переменная $_SERVER['SCRIPT_FILENAME'] будет содержать относительный путь, указанный пользователем.
'SERVER_ADMIN' - Эта переменная получает свое значение (для Apache) из директивы конфигурационного файла сервера. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для данного виртуального хоста.
'SERVER_PORT' - Порт на компьютере сервера, используемый веб-сервером для соединения. Для установок по умолчанию, значение будет '80'; используя SLL, например, это значение будет таким, какое сконфигурировано для соединений безопасного HTTP.
'SERVER_SIGNATURE' - Строка, содержащая версию сервера и имя виртуального хоста, которые добавляются к генерируемым сервером страницам, если включено.
'PATH_TRANSLATED' - Filesystem- (not document root-) based path to the current script, after the server has done any virtual-to-real mapping. Замечание: Начиная с PHP 4.3.2, переменная PATH_TRANSLATED больше не устанавливается неявно в Apache 2 SAPI, по сравнению с Apache версии 1, где она устанавливается в то же самое значение, что и переменная SCRIPT_FILENAME, когда она не используется Apache. Это изменение было сделано для соответствия спецификации CGI, где переменная PATH_TRANSLATED должна существовать только тогда, когда PATH_INFO определена. Пользователи Apache 2 могут использовать директиву AcceptPathInfo = On в конфигурационном файле httpd.conf для задания переменной PATH_INFO.
'SCRIPT_NAME' - Содержит путь, к текущему исполняемому скрипту. Это полезно для страниц, которые должны указывать на самих себя. Константа __FILE__ содержит полный путь и имя текущего (т.е. включаемого) файла.
'REQUEST_URI' - URI, который был передан для того, чтобы получить доступ к этой странице. Например, '/index.html'.
'PHP_AUTH_DIGEST' - При выполнении HTTP Digest аутентификации, этой переменной присваивается заголовок 'Authorization', который присылается клиентом (его необходимо потом использовать для соответствующей валидации).
'PHP_AUTH_USER' - Когда выполняется HTTP-аутентификация, этой переменной присваивается имя пользователя, предоставленное пользователем.
'PHP_AUTH_PW' - Когда выполняется HTTP-аутентификация, этой переменной присваивается пароль, предоставленный пользователем.
'AUTH_TYPE' - Когда выполняется HTTP-аутентификация, этой переменной присваивается тип аутентификации, который используется.
'PATH_INFO' - Содержит любой предоставленный пользователем путь, содержащийся после имени скрипта, но до строки запроса, если доступно. Например, если текущий скрипт запрошен по URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, то переменная $_SERVER['PATH_INFO'] будет содержать /some/stuff.
'ORIG_PATH_INFO' - Исходное значение переменной 'PATH_INFO' до начала обработки PHP.
Пример:
<?php echo $_SERVER['SERVER_NAME']; ?>
Выведет:
www.examplepage.com
Пример:
<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>
Выведет:
http://www.examplepage.com/index.php?lang=en
Січ 212012
 

Собираем библиотеки и сам IPFW:

cd /usr/src/lib/libalias
make -DIPFW2 && make install
cd /usr/src/sbin/ipfw
make -DIPFW2 && make install 
Пересобираем ядро с "options IPFW2" и опциями по вкусу:
options         IPFIREWALL              #firewall
options         IPFIREWALL_VERBOSE      #enable logging to syslogd(8)
options         IPFIREWALL_FORWARD      #enable transparent proxy support
options         IPFIREWALL_VERBOSE_LIMIT=100    #limit verbosity
options         IPFIREWALL_DEFAULT_TO_ACCEPT    #allow everything by default
options         DUMMYNET
options         IPFW2
Выполняем команду для перезапуска сервера 'shutdown -r now'
Січ 152012
 

PHP округление числа

В данной статье будет описано как в PHP округляются числа. В данном случае понадобятся три функции: round – функция округляет до ближайшего целого числа, ceil – функция округляет до ближайшего целого и floor -округляет в меньшую торону.
Рассмотрим по-порядку:

round()

Синтаксис:

float round ( float value [, int precision] )

Первый параметр дробное число. Второй параметр необязательный. В нём указывается точность округления.

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

echo round(3.7);     // 4
echo round(3.1);     // 3
echo round(4.5);     // 5
echo round(7.4999);  // 7
echo round(1.46,1);  // 1.5
echo round(1.7384,3);// 1.738
echo round(4939,-1); // 4940
echo round(3.5,1);   // 3.5
echo round(1244,-2); // 1200

Округление числа до сотых:

echo round(2.467,2); // 2.47

Округление числа до целого:

echo round(3.825); // 4

ceil() – округление в большую сторону

Синтаксис:

float ceil ( float value )

Один параметр, которому передаётся дробь. На выходе целое число, округлённое

в большую сторону.

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

echo ceil(3.7);  // 4
echo ceil(3.001);// 4
echo ceil(4.5);  // 5
echo ceil(8.0);  // 8

floor() – округление в меньшую сторону

Синтаксис:

float floor(float value)

Имеет один параметр для передачи дроби. Выходит целое число, округлённое

в меньшую сторону, либо попросту остается целое число.

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

echo floor(3.99); // 3
echo floor(3.023);// 3
echo floor(4.4);  // 4
echo floor(9.0);  // 9
Січ 142012
 

Восстановление отозванного сертификата openvpn

OpenSSL хранит статус каждого сертификата в ${CATOP}/index.txt, для OpenVPN это easy-rsa/keys/index.txt. На основе этого файла генерируется CRL (certificate revocation list).

Так выгялядят рабочий и отозванный сертификаты:
V       201120070444Z           22      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=goodboy/emailAddress=admin@fabit.ru
R       201217190136Z   110830061053Z   23      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=hmmboy/emailAddress=admin@fabit.ru
Для восстановления отозванного сертификата нужно отредактировать это файл. Заменить в строке соответствующей отозванному сетификату R на V и удалить третий столбец (это дата отзыва). Колонки разеделены табуляций, если нарушить это разделение, то можно похерить CA. Поэтому никаких пробелов и MS Word’ов.
После сохранения изменений нужно перегенерировать CRL. Возможно есть более гуманные способы, но приведенный ниже занял меньше всего времени по его поиску и возможности повторого использования. Скрипт revoke-full перегененрирует CRL, скопируем его в crl-regen и закомментируем строки ответственные за отзыв сертификата.
#!/bin/bash
CRL="crl.pem"
RT="revoke-test.pem"

#if [ $# -ne 1 ]; then
#    echo "usage: revoke-full <cert-name-base>";
#    exit 1
#fi

if [ "$KEY_DIR" ]; then
    cd "$KEY_DIR"
    rm -f "$RT" 

    # set defaults
    export KEY_CN=""
    export KEY_OU=""
    export KEY_NAME=""

#    # revoke key and generate a new CRL
#    $OPENSSL ca -revoke "$1.crt" -config "$KEY_CONFIG" 

    # generate a new CRL -- try to be compatible with
    # intermediate PKIs
    $OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"
    if [ -e export-ca.crt ]; then
        cat export-ca.crt "$CRL" >"$RT"
    else
        cat ca.crt "$CRL" >"$RT"
    fi

#    # verify the revocation
#    $OPENSSL verify -CAfile "$RT" -crl_check "$1.crt"
else
    echo 'Please source the vars script first (i.e. "source ./vars")'
    echo 'Make sure you have edited it to reflect your configuration.'
fi
Далее через скрипт list-crl можно поглядеть на отсутствие сертификата в списке отозванных. Так же помним о необходимости установить переменные среды через vars.
Січ 102012
 

Индикатор [ALARM] (ТРЕВОГА) мигает оранжевым цветом

При возникновении ошибки принтера индикатор [ALARM] (ТРЕВОГА) мигает оранжевым цветом так, как показано ниже. Число миганий индикатора указывает на тип ошибки. Подсчитайте, сколько раз мигнул индикатор, и исправьте соответствующую ошибку.

 
Причина Действие
Мигает два раза. В принтере закончилась бумага. / Бумага не подается. Повторно загрузите бумагу в устройство автоподачи и нажмите кнопку[RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА).
Мигает три раза. Застревание бумаги. Возможно, в принтере застряла бумага. Удалите застрявшую бумагу, правильно загрузите бумагу в принтер и нажмите кнопку[RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА).
Мигает четыре раза. Чернила закончились. Чернила закончились.Замените этот картридж и закройте крышку.

Если печать не закончена и вы хотите ее продолжить, нажмите и не отпускайте не менее 5 секунд клавишу [RESUME] (ВОЗОБНОВИТЬ), оставив установленным этот картридж. После этого печать может продолжаться при закончившихся чернилах.

Функция определения оставшегося запаса чернил будет отключена.

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

Мигает пять раз. Не удается определить картридж FINE (FINE Cartridge). Возможны следующие причины.Возможно, картридж FINE (FINE Cartridge) неправильно установлен.

Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.

Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, выполните выравнивание печатающих головок.

Мигает семь раз. Картридж FINE (FINE Cartridge) установлен в неправильное гнездо. Проверьте, что картридж FINE (FINE Cartridges) установлен на соответствующее место.
Мигает восемь раз. Контейнер для отработанных чернил почти полон. Принтер имеет встроенный контейнер для чернил, использованных, например, во время очистки печатающей головки.Восемь миганий свидетельствуют о том, что этот контейнер почти заполнен.

Нажмите кнопку [RESUME/CANCEL] (ВОЗОБНОВИТЬ/ОТМЕНА), чтобы сбросить ошибку и продолжить печать.

Обратитесь в центр технического обслуживания Canon до того, как контейнер для отработанных чернил полностью заполнится (одну из деталей принтера потребуется заменить).

Важно

Компания Canon рекомендует обращаться в центр технического обслуживания сразу после возникновения этой ошибки. После окончательного заполнения контейнера для отработанных чернил печать станет невозможной до тех пор, пока контейнер не будет заменен.

Мигает четырнадцать раз. Не удается распознать картридж FINE (FINE Cartridge). Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, выполните выравнивание печатающих головок.
Мигает пятнадцать раз. Не удается распознать картридж FINE (FINE Cartridge). Возможны следующие причины.Возможно, картридж FINE (FINE Cartridge) неправильно установлен.

Возможно, картридж FINE (FINE Cartridge) несовместим с данным принтером.

Установите подходящий картридж FINE (FINE Cartridge). Если линии печатаются со смещением или присутствуют другие недостатки печати, произведите выравнивание печатающих головок.

Мигает шестнадцать раз. Невозможно определить уровень чернил. Возможно, чернила закончились.Функция определения оставшегося запаса чернил будет отключена, поскольку не удается правильно определить запас чернил.

Чтобы продолжить печать без этой функции, нажмите и не отпускайте не менее 5 секунд клавишу [RESUME] (ВОЗОБНОВИТЬ).

Для достижения оптимального качества компания Canon рекомендует использовать новые оригинальные картриджи Canon.

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

 

 Индикаторы [POWER] (ПИТАНИЕ) и [ALARM] (ТРЕВОГА) мигают зеленым и оранжевым цветом поочередно

Индикаторы [POWER] (ПИТАНИЕ) и [ALARM] (ТРЕВОГА) мигают поочередно, как показано на рисунке ниже.

Отсоедините кабель принтера от принтера, а затем выключите питание принтера и отсоедините его от сети электропитания. Через некоторое время снова подсоедините принтер к сети питания и включите его.

Если неполадка не устранена, обратитесь в сервисный центр Canon.