PHP определить https или http используется при подключении
Заголовок вышел немного корявый, но суть следующая — как на PHP определить по какому протоколу http или https выполняется текущее подключение к сайту. Это необходимо для тех скриптов, которые используют в своей работе тег <base>, тогда все относительные ссылки будут подключатся по нужным протоколам.
Хотя в документации указано что можно проверять $_SERVER[‘HTTPS’] — все оказалось немного сложнее.
Вот полный сниппет, который у меня получился (точнее сниппет не совсем мой — когда я уже написал свой аналогичный, я нашел немного более красивый у разработчиков OkayCMS) и чуть ниже я расскажу почему именно так.
// Протокол $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http'; if($_SERVER["SERVER_PORT"] == 443) $protocol = 'https'; elseif (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) $protocol = 'https'; elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') $protocol = 'https';
Вся проблема с корректным определением протокола в кеширующих прокси, (если использовать нативный Апач, то проблем обычно нету) в зависимости от конфигов в переменных может твориться все что угодно,
В первой строке определяется протокол $_SERVER[«SERVER_PROTOCOL»] , эта строка заполнена всегда, но в зависимости от конфига сервера там может быть http даже если подключение выполняется по https (да, бывает и такое), поэтому начальное значение берется оттуда.
Далее проверяем порт, если это 443, то это точно https.
Далее если порт не такой, но в конфиге сервера указана переменная $_SERVER[‘HTTPS’], то будем надеяться что он таки не соврал и это таки https (тут есть один ньюанс, которого в сниппете нету для такого экзотического конфига как ISAPI + IIS, значение $_SERVER[‘HTTPS’] будет равно ‘off’, в случае обычного подключения, а что будет в случае https — я не знаю, т.к. проверить это не могу, просто учтите)
Ну и вишенка на тортике, это предпоследняя строка, если используются reverse proxy аля Cloudflare или хитро настроенный nginx, то все предыдущие строки будут бодро рапортовать о 80 порте и обычном подключении, а оказывается на самом деле все идет по защищенному протоколу, ибо $_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’.
На это все, как видите определить http или https на php, не особо сложно, главное учесть все детали.
PHP: Что такое PHP? — Manual
Что такое PHP?
PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) — это распространенный язык программирования общего назначения с открытым исходным кодом. PHP специально сконструирован для веб-разработок и его код может внедряться непосредственно в HTML.
Простой ответ, но что он может означать? Вот пример кода:
Пример #1 Пример программирования на PHP
<!DOCTYPE html>
<html>
<head>
<title>Пример</title>
</head>
<body> <?php
echo "Привет, я - скрипт PHP!";
?>
</body>
</html>
Вместо рутинного вывода HTML-кода командами языка
(как это происходит, например, в Perl или C),
скрипт PHP содержит HTML с встроенным кодом (в нашем
случае, это вывод текста «Привет, я — скрипт PHP!»).
Код PHP отделяется специальными начальным и конечным тегами <?php
и ?>
,
которые позволяют «переключаться» в «PHP-режим» и выходить из него.
PHP отличается от JavaScript тем, что PHP-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту. Если бы у вас на сервере был размещен скрипт, подобный вышеприведенному, клиент получил бы только результат его выполнения, но не смог бы выяснить, какой именно код его произвел. Вы даже можете настроить свой сервер таким образом, чтобы обычные HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.
PHP крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов. Не пугайтесь длинного списка возможностей PHP. Вы можете быстро начать, и уже в течение нескольких часов сможете создавать простые PHP-скрипты.
Хотя PHP, главным образом, предназначен для работы в среде веб-серверов, область его применения не ограничивается только этим. Читайте дальше и не пропустите главу Возможности PHP либо, начните непосредственно с Вводного руководства, если вас интересует исключительно веб-программирование.
Пошаговая настройка Apache с выбором версий php + Nginx как reverse proxy (с mod_pagespeed) на ubuntu 16.04
В интернете кучу статей по настройке сервера, настройки Apache, Nginx и т.п. В данной статье будет пошагово настроен простой shared хостинг. Все операции производятся через консоль.В посте будут решены и описаны следующий задачи:
1. Установка Apache + PHP
2. Возможность выбора версий PHP
4. Установка Nginx с модулем pagespeed от google
5. Настройка Nginx как reverse proxy
Все этапы будут содержать описание и пояснения. Сам пост писался больше для себя, чтобы не потерять порядок настройки, но будет очень полезным для новичков, которые начинают разбираться в администрировании сервера. В качестве сервера установлен Ubuntu 16.0.4 только с SSH.
ЭТАП 1 (Установка Apache + PHP)
Запускаем оболочку с root правами:
sudo -i
Устанавливаем apache:
apt install -y apache2
Ключ
-y
нужен для того чтобы в процессе установки, автоматически на все вопросы отвечал положительно. К примеру если выполнить: apt install apache2
то в процессе установки нас спросят, действительно ли мы хотим установить.
Устанавливаем php (как mod_php)
apt install -y php libapache2-mod-php
На данном этапе у нас установиться php версии 7 как модуль apache.
ЭТАП 2 (Возможность выбора версий PHP)
На первом этапе мы установили сервер Apache + PHP при чем PHP у нас работает как модуль Apache. Существует несколько режимов работы PHP подробную информацию можно прочитать по ссылке «Коротко о CGI, FastCGI, PHP-FPM и mod_php».
Если вам лень читать, то объясню проще:
1. mod_php — сам Apache выполняет php скрипт.
Плюсы: работает быстро, требует минимум настроек и знаний
Минусы: скрипты выполняются от пользователя apache (как правило www-data)
2. CGI/FastCGI — Сервер Apache запускает прикладной скрипт интерпретатора php-cgi, который в свою очередь выполняет php скрипт
Плюсы: скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP), конфигурацию PHP можно сделать индивидуальной
Минусы: скорость работы, дополнительная настройка
3.PHP-FPM — это модернизированный fast-cgi сервер который постоянно держит готовые для работы пул-процессов.
Плюсы: скорость работы, скрипты выполняются от произвольного пользователя, можно использовать в связке с другими приложениями (Nginx + PHP-FPM — самая распространная реализация)
Минусы: дополнительная настройка, занимает порт, на каждого пользователя открывается свой порт.
Мы остановимся на CGI/FastCGI. На самом деле многие может испугать, что он самый медленный, но на большинстве shared хостингов, именно этот режим работы (ispmanager использует именно этот режим работы). Нам потребуется собрать из исходников версии php которые нам необходимы.
2.1 Сборка php из исходников
Обновляем репозиторий:
apt update
Устанавливаем необходимые для сборки пакеты:
apt install -y make \
git autoconf \
lynx \
wget \
build-essential \
libxml2-dev \
libssl-dev \
libbz2-dev \
libcurl4-openssl-dev \
libpng12-dev \
libfreetype6-dev \
libxpm-dev \
libmcrypt-dev \
libmhash-dev \
libmysqlclient-dev \
libjpeg62-dev \
freetds-dev \
libjson-c-dev \
re2c \
zlib1g-dev \
libpcre3 \
libpcre3-dev \
unzip \
libxslt1-dev
Символ \ используется как перенос строки, для удобства чтения.
Создаем папки для php:
mkdir -p /opt/source/php
mkdir -p /opt/php/
Переходим в директорию в которой будут храниться исходники php
cd /opt/source/php
Скачиваем необходимую версию php и распаковываем ёё:
wget -c http://php.net/get/php-5.6.18.tar.bz2/from/this/mirror -O php-5.6.18.tar.bz2 tar xvjf php-5.6.18.tar.bz2
В последней команде мы скачали по ссылке php-5.6.18 и сохранили как php-5.6.18.tar.bz2
После чего распаковали архив.
Переходим в директория скаченного и распакованного php
cd /opt/source/php/php-5.6.18
Конфигурируем php
./configure --enable-cli \ --prefix=/opt/php/php-5.6.18 \ --disable-rpath \ --enable-calendar \ --enable-discard-path \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-fpm \ --enable-ftp \ --enable-gd-native-ttf \ --enable-inline-optimization \ --enable-mbregex \ --enable-mbstring \ --enable-pcntl \ --enable-soap \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-zip \ --with-bz2 \ --with-curl \ --with-curl \ --with-freetype-dir \ --with-gd \ --with-gd \ --with-gettext \ --with-jpeg-dir \ --with-jpeg-dir=/usr/lib/ \ --with-libdir=/lib/x86_64-linux-gnu \ --with-libxml-dir=/usr \ --with-mcrypt \ --with-mhash \ --with-mysql \ --with-mysql \ --with-mysqli \ --with-mysqli \ --with-openssl \ --with-pcre-regex \ --with-pdo-mysql \ --with-png-dir=/usr \ --with-zlib \ --with-zlib-dir
Стоить обратить внимание на строку —prefix=/opt/php/php-5.6.18. Именно в эту директорию будет собран проект. Также вы самостоятельно можете добавлять или удалять необходимые модуль и компоненты php. Но при конфигурации обязательно должны быть —enable-fastcgi и —enable-force-cgi-redirect. После конфигурации собираем php
make
make install
Процесс сборки непривычно долгий, поэтому не стоит переживать по этому поводу. По завершению сборки можно проверить командой:
/opt/php/php-5.6.18/bin/php -v
В результате будет что то вроде:
PHP 5.6.18 (cli) (built: Jun 8 2017 15:59:20)
Copyright © 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright © 1998-2016 Zend Technologies
2.2 Настройка Apache
Далее нам потребуется чтобы Apache вызывал php скрипт через режим fastcgi. Устанавливаем и активируем mod_fcgi
apt install libapache2-mod-fcgid
a2enmod cgi fcgid actions
перезапустим сервис Apache
service apache2 restart
2.3 Создание CGI скрипта
Создадим обертку для запуска PHP-FastCGI
mkdir -p /opt/php/php-5.6.18/fcgi-bin
В данной папке создадим скрипт с именем php со следующим содержимом
#!/opt/php/php-5.6.18/bin/php-cgi
. Лично я использую редактор nano.nano /opt/php/php-5.6.18/fcgi-bin/php
Вставляем код, выходим CTRL+X и подтверждаем изменения.
Делаем файл испольняемым:
chmod +x /opt/php/php-5.6.18/fcgi-bin/php
В той же директории создаем файл php.ini () можно скопировать /opt/source/php/php-5.6.18/php.ini-production.
2.4 Настройка хоста для Apache
В примере будет показана настройка виртуального хоста по умолчанию:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<IfModule mod_fcgid.c>
IPCCommTimeout 7200
FcgidConnectTimeout 320
MaxRequestLen 25728640
FcgidMaxRequestsPerProcess 0
FcgidBusyTimeout 3600
FcgidOutputBufferSize 0
</IfModule>
<FilesMatch "\.ph(p[3-5]?|tml)$">
SetHandler fcgid-script
FCGIWrapper /opt/php/php-5.6.18/fcgi-bin/php
</FilesMatch>
ErrorLog /var/www/html/error.log
CustomLog /var/www/html/access.log combined
</VirtualHost>
<Directory /var/www/html>
Options +Includes +ExecCGI
</Directory>
Перезапускаем настройки Apache:
service apache2 reload
ЭТАП 3 ( Возможность работы сайтов от разных пользователей, с ограничением на чтение директорий других сайтов.)
Для разграничения прав по пользователям у Apache есть 2 разных модуля suEXEC и ITK.
Рассмотрим как работает каждый из них:
ITK — При поступлении запроса, apache создает процесс-обработчик, который наследует права корневого процесса, но после проверки контекста меняет свои права на указанного пользователя.
suEXEC -При поступлении запроса apache запускает CGI и аналогичные собственные или сторонних разработчиков скрипты/программы внутри веб-папки домена от имени указанного пользователя.
suEXEC в нашем варианте предпочтительней из-за особенности архитектуры работы. Устанавливаем suEXEC
apt install apache2-suexec-custom
a2enmod suexec
Важно, для правильной работы suexec необходимы правильно выставить права на директории.
Как располагать директории вы должны определиться сами, в примере приведется пример, и он не является оптимальным.
Иерархия папок следующая:
|--/var/www/ - Корневая папка, права 751 владелец root
|----/php-bin - Папка храннения дефолтных настроек для php
|------/php-5.6.18 - Папка храннения дефолтных настроек для php-5.6.18
|--------php - Исполняемый файл для php-5.6.18
|--------php.ini - Дефольный файл настроке
|--------php.ini - Дефольный файл настроке
|----/apache-cert - папка хранения сертификатов для apache
Создаем папки для пользователя:
mkdir -p /var/www/users/admin
mkdir -p /var/www/users/admin/domain.ru
mkdir -p /var/www/users/admin/apache-log
mkdir -p /var/www/users/admin/php-bin
mkdir -p /var/www/users/admin/temp
mkdir -p /var/www/users/admin/temp/php-session
Копируем файлы настроек для php:
cp /opt/php/php-5.6.18/fcgi-bin/php /var/www/users/admin/php-bin/php
cp /opt/php/php-5.6.18/fcgi-bin/php.ini /var/www/users/admin/php-bin/php.ini
Создаем юзера (важно помнить что все пользователи в группе admin имеют доступ на запуск программ из sudo, поэтому при выборе имени admin он автоматически будет иметь права на выполнения sudo. В данном примере это не критично, но вам следует помнить об этом при создании пользователя).
useradd -m -s /bin/bash admin
passwd admin
Выставляем владельца папки:
chown admin:admin -R /var/www/users/admin
Выставляем корневую директорию для пользователя:
usermod -d /var/www/users/admin admin
Настраиваем виртуальные хосты в apache:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/users/admin/domain.ru
SuexecUserGroup admin admin
<IfModule mod_remoteip.c>
RemoteIPHeader X-Forwarded-For
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 127.0.0.1
</IfModule>
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</ifmodule>
<IfModule mod_fcgid.c>
IPCCommTimeout 7200
FcgidConnectTimeout 320
MaxRequestLen 25728640
FcgidMaxRequestsPerProcess 0
FcgidBusyTimeout 3600
FcgidOutputBufferSize 0
</IfModule>
<FilesMatch "\.ph(p[3-5]?|tml)$">
SetHandler fcgid-script
FCGIWrapper /var/www/users/admin/php-bin/php
</FilesMatch>
ErrorLog /var/www/users/admin/apache-log/error.log
CustomLog /var/www/users/admin/apache-log/access.log combined
</VirtualHost>
<Directory /var/www/users/admin/www>
AllowOverride All
Options +Includes +ExecCGI
</Directory>
В настройках php.ini пользователя меняем session.save_path
session.save_path = /var/www/users/admin/temp/php-session
Перезапускаем apache:
service apache2 restart
ЭТАП 4 (Установка Nginx с модулем pagespeed от google)
Забегая вперед, для поддержки pagespeed в Nginx требуется пересобрать сам Nginx с этим модулем, но чтобы потом не лазить дополнительно в настройках, проще сначало установить его.
Изменяем порты для Apache:
/etc/apache2/ports.conf
+ Ваши созданные виртуальные хосты
Перезапускаем Apache:
service apache2 restart
Устанавливаем ngnix:
apt-get install nginx
Собираем Nginx с pagespeed
Вначале необходимо установить все необходимы для сборки пакеты:
apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip libxslt1-dev libgd-dev libgeoip-dev
Создаем папки для исходников nginx:
mkdir -p /opt/source/nginx
cd /opt/source/nginx
Скачиваем и распаковываем pagespeed и psol. Yt cnjbn g
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.11.33.4-beta.zip
unzip v1.11.33.4-beta.zip
cd ngx_pagespeed-1.11.33.4-beta
wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz
tar -xzvf 1.11.33.4.tar.gz
Сам psol скачивается и распаковывается в директории с ngx_pagespeed. Переходим в папку с Ngnix
cd /opt/source/nginx
Проверяем версию ngnix (по умолчанию в ubuntu 16.0.4 устанавливается 1.10.0):
nginx -V
Загружаем т версию NGINX:
wget https://nginx.ru/download/nginx-1.10.0.tar.gz
tar -xvzf nginx-1.10.0.tar.gz
Собираем nginx с теми же параметрами что и установленный, но в конце добавляем дополнительные модули:
cd /opt/source/nginx/nginx-1.10.0
./configure \
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads \
--add-module=/opt/source/nginx/ngx_pagespeed-1.11.33.4-beta \
--with-http_mp4_module
Собираем Nginx:
make
make install
Собранный бинарный файл Nginx располагается в директории /opt/source/nginx/nginx-1.10.0/objs/nginx. Для того чтобы установить, требуется просто заменить текущий испоняемый файл Nginx на собранный.
Остановим Nginx, заменим файл, и перезапустим его.
service nginx stop
#Переименовываем (на всякий случай) текущий nginx в nginx_backup:
mv /usr/sbin/nginx /usr/sbin/nginx_backup
# Перемещаем на его место новый собранный бинарник:
mv /opt/source/nginx/nginx-1.10.0/objs/nginx /usr/sbin/nginx
перезапускаем Nginx:
service nginx start
Создаем папку хранения кэша для pagespeed:
/var/www/temp/
/var/www/temp/page-speed/
Добавим /etc/nginx/nginx.conf в секцию http:
pagespeed on;
pagespeed FileCachePath "/var/www/temp/page-speed/";
pagespeed EnableFilters combine_css,combine_javascript,rewrite_images,rewrite_css,rewrite_javascript,inline_images,recompress_jpeg,recompress_png,resize_images;
pagespeed JpegRecompressionQuality 85;
pagespeed ImageRecompressionQuality 85;
pagespeed ImageInlineMaxBytes 2048;
pagespeed LowercaseHtmlNames on;
ЭТАП 5 (Настройка Nginx как reverse proxy )
Скажу скажу что в интернете кучу статей для настройки Nginx как reverse proxy. Я лиш приведу ознакомительный вариант настройки.
server {
listen 80;
server_name domain.ru;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/users/admin/domain.ru;
index index.html index.php;
access_log off;
expires 30d;
error_page 404 = @prox;
}
location @prox{
proxy_pass 127.0.0.1:8880;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass 127.0.0.1:8880;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Что такое HTML?Всемирная паутина соткана из Web-страниц (Web-pages), а эти страницы создаются при помощи языка разметки гипертекста (HyperТext Markup Language, HTML). HTML — это язык разметки. Вы используете HTML для разметки текстового документа, точно так же, как это делает редактор при помощи жирного красного карандаша. Эти пометки служат для определения формата (или стиля), который будет использован при выводе текста на экран монитора. читать дальше… Что такое DHTML?DHTML (динамический HTML) — это набор средств, которые позволяют создавать интерактивные Web-страницы без увеличения загрузки сервера. DHTML построен на объектной модели документа (Document Object Model, DOM), которая расширяет традиционный статический HTML-документ. DOM обеспечивает динамический доступ к содержимому документа, его структуре и стилям. В DOM каждый элемент Web-страницы является объектом, который можно изменять. DOM не определяет новых тэгов и атрибутов, а просто обеспечивает возможность программного управления всеми тэгами, атрибутами и каскадными листами стилей (CSS). читать дальше… Что такое JavaScript?JavaScript предназначен для написания сценариев для активных HTML-страниц. JavaScript не предназначен для создания автономных приложений. Программа на JavaScript встраивается непосредственно в исходный текст HTML-документа и интерпретируется брaузером по мере загрузки документа. С помощью JavaScript можно динамически изменять текст загружаемого HTML-документа и реагировать на события, связанные с действиями посетителя или изменениями состояния документа или окна. Важная особенность JavaScript — объектная ориентированность. Программисту доступны многочисленные объекты, такие, как документы, гиперссылки, формы, фреймы и т.д. читать дальше… Что такое PHP?PHP (Personal Home Page) — серверный язык создания сценариев. Первая версия PHP была создана Расмусом Лердорфом в 1994 г. и представляла собой набор инструментов для отслеживания посетителей Web-страницы. Сегодня это полноценный мощный язык программирования, его название было изменено как рекурсивное образование PHP HyperText Preprocessor (препроцессор гипертекста PHP). Конструкции PHP, вставленные в HTML-текст, выполняются сервером при каждом посещении страницы. Результат их обработки вместе с обычным HTML-текстом передается браузеру. читать дальше… Что такое XML?XML (eXtensible Markup Language) — расширяемый язык разметки. Основное внимание в XML сосредоточено на данных. В XML структурная разметка данных и представление данных строго разделены. читать дальше… Что такое XSLT?XSLT (eXtensible Stylesheet Language Transformations) — расширяемый язык преобразования листов стилей. Язык XSLT служит транслятором, с помощью которого можно свободно модифицировать исходный текст. XLST играет решающую роль в утверждении XML в качестве универсального языка хранения и передачи данных. Область применения XSLT широка — от электронной коммерции до беспроводного Web. читать дальше… Что такое AJAX?Ajax расшифровывается как Asynchronous Javascript And XML (Асинхронные Javascript И XML) и технологией в строгом смысле слова не является. Если в стандартном веб-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в Ajax-приложении между пользователем и сервером появляется еще один посредник — движок Ajax. Он определяет, какие запросы можно обработать «на месте», а за какими необходимо обращаться на сервер. читать дальше… | Домены, Сайты, Хостинг, DNSДомен — уникальный текстовый идентификатор, позволяющий легко запомнить и однозначно определить сайт. С помощью DNS-сервера доменное имя превращается в IP-адрес, по которому находится сервер, на котором распологается сайт. Сайт (Web-сайт, Web-узел) — совокупность логически связанных web-страниц. Здесь Вы найдете много материалов о том как создать сайт, как сделать его посещаемым и как научить его приносить Вам деньги. Хостинг (Hosting, Web-hosting, Collocation) — размещение страниц сайта на сервере, постоянно подключенном к Интернет. Эта статья поможет Вам с выбором хостинга для вашего сайта. API для работы с доменами.Создание сайта, CMSЧтобы сделать хороший сайт, Вам прийдется разобраться в тонкостях HTML-верстки, программировании на PHP, javascript. Чтобы сделать простенький сайт достаточно разобраться в работе CMS. Статья про создание сайтов проведет Вас пошагово от разработки концепции и до заработка CMS (Content Management System) — система управления содержанием сайта. CMS иначе ещё называют «движек сайта», т.е. программа с помощью которой вы создаете и изменяете сайт, которая отвечает за его работу и отображение. Эта статья поможет Вам с выбором CMS для вашего сайта. Здесь Вы найдете подборку шаблонов для вашего сайта. Сервисы для СайтовSEO, Продвижение сайтовSEO (Search Engines Optimization) — комплекс мер, направленный на улучшение позиций сайта в выдаче поисковой системой по конкретным поисковым запросам. Каждый хочет, чтобы на его сайт заходило много людей. Откуда они могут узнать о сайте? Прежде всего от поисковой системы, такой как Яндекс, Google. Возникает желание, чтобы сайт был на первой странице при поиске. Как этого добиться Вы узнаете прочитав статью о поисковом продвижении. Провести комплексный анализ сайта Работа с изображениямиЗдесь собраны различные сервисы работы с изображениями. Большинство примеров с открытым исходным кодом на PHP. Шифрация и раскодированиеЗдесь Вы найдете множество программ и сервисов, которые помогут Вам прочитать закодированное письмо или самому закодировать часть программы или кода. Большинство примеров с открытым исходным кодом. Чей домен? Чей IP? Чей телефон? |
PHP Примеры
PHP Синтаксис
Запись текста в вывод с помощью PHP
Добавить комментарии PHP
Ключевые слова, классы, функции и определяемые пользователем функции не чувствительны к регистру
Имена переменных чувствительны к регистру
Объяснение
PHP Переменные
Создание различных переменных
Тест глобальной области (переменная вне функции)
Тест локальной области (переменная внутри функции)
Используйте ключевое слово global для доступа к глобальной переменной из функции
Используйте массив $GLOBALS[] для доступа к глобальной переменной из функции
Используйте ключевое слово static, чтобы локальная переменная не удалялась после выполнения функции
Объяснение
PHP Echo и Print
Просмотр строк с командой echo
Просмотр строк и переменных с помощью команды echo
Просмотр строк с командой print
Просмотр строк и переменных с помощью команды print
Объяснение
PHP Тип Данных
PHP строки
PHP целое число
PHP число с точкой
PHP массивы
PHP объекты
PHP значение NULL
Объяснение
PHP Строки
Получить длину строки — strlen()
Подсчет количества слов в строке — str_word_count()
Реверс строки — strrev()
Поиск определенного текста в строке — strpos()
Замена текста в строке — str_replace()
Объяснение
PHP Константы
Регистрозависимое имя константы
Не регистрозависимое имя константы
Объяснение
PHP Операторы
Арифметический оператор: Дополнение (+)
Арифметический оператор: Вычитание (-)
Арифметический оператор: Умножение (*)
Арифметический оператор: Разделение (/)
Арифметический оператор: Модуль (%)
Оператор присваивания: x = y
Оператор присваивания: x += y
Оператор присваивания: x -= y
Оператор присваивания: x *= y
Оператор присваивания: x /= y
Оператор присваивания: x %= y
Оператор сравнения: Равный (==)
Оператор сравнения: Идентичный (===)
Оператор сравнения: Не равный (!=)
Оператор сравнения: Не равный (<>)
Оператор сравнения: Не идентичный (!==)
Оператор сравнения: Более чем (>)
Оператор сравнения: Менее чем (<)
Оператор сравнения: Больше или равно (>=)
Оператор сравнения: Меньше или равно (<=)
Оператор инкремента: ++$x
Оператор инкремента: $x++
Оператор декремента: —$x
Оператор декремента: $x—
Логический оператор: И
Логический оператор: ИЛИ
Логический оператор: исключающее ИЛИ
Логический оператор: && (И)
Логический оператор: || (ИЛИ)
Логический оператор: НЕТ
Строковый оператор: Конкатенация $txt1 и $txt2
Строковый оператор: Добавляет $txt2 в $txt1
Оператр массива: Объединение (+)
Оператр массива: Равенство (==)
Оператр массива: Идентичность (===)
Оператр массива: Неравенство (!=)
Оператр массива: Неравенство (<>)
Оператр массива: Неидентичность (!==)
Объяснение
PHP If…Else и Switch Заявления
if заявление
if…else заявление
if…elseif…else заявление
switch заявление
Объяснение
PHP While и For Циклы
while цикл
do…while цикл
Другой do…while цикл
for цикл
foreach цикл
Объяснение
PHP Функции
Создание функции
Функция с одним аргументом
Функция с двумя аргументами
Функция со значением аргумента по умолчанию
Функция возвращающая значение
Объяснение
PHP Массивы
Индексный массив
count() — Возвращает длину массива
Цикл по индексированному массиву
Ассоциативный массив
Цикл по ассоциативному массиву
Объяснение
PHP Сортировка Массивов
sort() — Сортировать массив по возрастанию в алфавитном порядке
sort() — Сортировать массив по возрастанию
rsort() — Сортировать массив по убыванию в алфавитном порядке
rsort() — Сортировать массив по убыванию чисел
asort() — Сортировать массив по возрастанию в соответствии со значением
ksort() — Сортировать массив по возрастанию, в соответствии с ключом
arsort() — Сортировать массив по убыванию в соответствии со значением
krsort() — Сортировать массив по убыванию, в соответствии с ключом
Объяснение
PHP Суперглобальные Массивы
$GLOBAL — Используется для доступа к глобальным переменным из любой точки PHP скрипта
$_SERVER — Содержит сведения о заголовках, путях и расположениях сценариев
$_REQUEST — Используется для сбора данных после отправки HTML формы
$_POST — Используется для сбора данных формы после отправки формы HTML. Также используется для передачи переменных
$_GET — Собрать данные, передаваемые в URL
Объяснение
PHP Проверка Формы
PHP Проверка Формы
Объяснение
PHP Многомерный Массив
Вывод элементов из многомерного массива
Цикл по многомерному массиву
Объяснение
PHP Дата и Время
Формат сегодняшней даты в нескольких направлениях
Автоматически обновлять год авторских прав на вашем сайте
Вывести текущее время (время сервера)
Установить часовой пояс, затем вывести текущее время
Создание даты и времени из нескольких параметров в mktime()
Создание даты и времени из функции strtotime()
Создать больше дат/времени из strtotime()
Вывод даты в течение следующих шести субботам
Вывод количество дней до 4 июля
Объяснение
PHP Подключить Файл
Использовать include включить «footer.php» в странице
Использовать include включить «menu.php» in a page
Использовать include включить «vars.php» in a page
Использовать include включить несуществующий файл
Использовать require включить несуществующий файл
Объяснение
PHP Обработка Файлов
Использовать readfile() для чтение файла и записи его в выходной буфер
Объяснение
PHP Файл Открыть/Прочитать/Закрыть
Использовать fopen(), fread(), и fclose() для открытия, чтения и закрытие файла
Использовать fgets() для чтения одной строки из файла
Использовать feof() для чтения файла строки за строкой до тех пор, пока не будет достигнут конец файла
Использовать fgetc() для чтения одного символа из файла
Объяснение
PHP Куки
Создание и получение файла cookie
Изменить значение cookie
Удалить куки
Проверьте включены ли файлы cookie
Объяснение
PHP Сессии
Начало сеанса
Получить значения переменных сеанса
Получить все значения переменных сеанса
Изменение переменной сеанса
Удаление сеанс
Объяснение
PHP Фильтры
Использовать filter_list() для перечисления расширения фильтра в PHP
Очистка строки
Проверка целого числа
Проверить целое число, равное 0
Проверка IP-адреса
Очистка и проверка адреса электронной почты
Очистка и проверка URL адреса
Объяснение
PHP Выбрать Данные из MySQL
Выберите данные с MySQLi (Объектно-ориентированный)
Выберите данные с MySQLi (Объектно-ориентированный) и поместить результат в HTML таблицу
Выберите данные с MySQLi (Процессуальный)
Выберите данные с PDO (+ Подготовленное заявление)
Объяснение
PHP SimpleXML Парсер
Использовать simplexml_load_string() для чтения XML данных из строки
Использовать simplexml_load_file() для чтения XML данных из файла
Получить значения узлов
Получение значений узлов определенных элементов
Получить значения узлов — цикла
Получить значения атрибутов
Получить значения атрибутов — цикла
Объяснение
PHP XML Expat Парсер
Инициализируйте анализатор XML Expat, определите некоторые обработчики, затем проанализируйте XML файл
Объяснение
php — Как узнать, используете ли вы HTTPS без $ _SERVER [‘HTTPS’]
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
,Перенаправление с HTTP на HTTPS с PHP
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…
PHP: $ _SERVER — Руководство
Руководство по абсолютным путям … Данные: __FILE__
Тип данных: String
Назначение: Абсолютный путь к запущенному файлу PHP, включая имя файла.
Предостережение: это не тот файл, который вызывается процессором PHP, это то, что выполняется. Так что, если вы находитесь внутри include, это include.
Предостережение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предостережение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: __DIR__
Тип данных: Строка
Цель: Абсолютный путь к запущенному файлу PHP, исключая имя файла
Предостережение: Это не тот файл, который вызывается Процессор PHP, это то, что работает. Так что, если вы находитесь внутри include, это include.
Предостережение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предостережение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: $ _SERVER [‘SCRIPT_FILENAME’]
Тип данных: Строка
Цель: Абсолютный путь к исходному файлу PHP, включая имя файла
Предостережение: не задано во всех средах PHP может потребоваться настройка путем копирования из __FILE__ перед включением других файлов.
Предостережение: символические ссылки не разрешаются заранее, используйте функцию PHP realpath, если вам нужно ее разрешить.
Предостережение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Предостережение: «Имя файла» заставляет вас думать, что это просто имя файла, но на самом деле это полный абсолютный путь. Считайте идентификатор как «Имя файловой системы (пути) скрипта».
Работает в веб-режиме: Да
Работает в режиме CLI: Да
Данные: $ _SERVER [‘PATH_TRANSLATED’]
Тип данных: String
Цель: Абсолютный путь к исходному файлу PHP, включая имя файла
Предостережение: вероятно не установлен, лучше просто не использовать. Просто используйте realpath ($ _ SERVER [‘SCRIPT_FILENAME’]) (и имейте в виду, что может потребоваться эмуляция самого файла).
Предостережение: символические ссылки предварительно разрешены, поэтому не доверяйте точному сравнению путей.
Предостережение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Нет
Данные: $ _SERVER [‘DOCUMENT_ROOT’]
Тип данных: Строка
Цель: Получить абсолютный путь к корню документа веб-сервера. Без косой черты в конце.
Предостережение: не доверяйте этой настройке или правильной настройке, если вы не контролируете серверную среду.
Предостережение: символические ссылки могут быть предварительно разрешены или не иметь, используйте функцию PHP ‘realpath’, если вам нужно ее разрешить.
Предостережение: не предполагайте, что все операционные системы используют символ «/» в качестве разделителя каталогов.
Работает в веб-режиме: Да
Работает в режиме CLI: Нет
Обратите внимание, что если что-то не установлено, оно может отсутствовать в $ _SERVER или быть пустым, поэтому используйте для вашего теста функцию PHP «empty».
Обратите внимание, что если вы вызываете «php —info» в командной строке, то, естественно, некоторые из этих настроек будут пустыми, поскольку файл PHP не задействован.
.PHP Протокол получения URL сайта — http против https
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании