PHP — Концепции Веб

PHP — Концепции Веб

От автора: в этой статье мы рассмотрим, как взаимодействует с PHP веб. В частности, как PHP может предоставлять динамический контент в зависимости от типа браузера, произвольно сгенерированных чисел или данных, введенных пользователем. А также расскажем о перенаправлении браузера клиента.

Идентификация браузера и платформы

PHP создает ряд переменных среды, их можно найти на странице phpinfo.php, которая использовалась для настройки среды PHP.
Одна из переменных среды, установленных PHP — HTTP_USER_AGENT, она идентифицирует браузер пользователя и операционную систему.

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

<html>
  <body>
 
 <?php
 function getBrowser() { 
 $u_agent = $_SERVER['HTTP_USER_AGENT']; 
 $bname = 'Unknown';
 $platform = 'Unknown';
 $version = "";
 
 //Сначала определяем платформу?
 if (preg_match('/linux/i', $u_agent)) {
 $platform = 'linux';
 }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
 $platform = 'mac';
 }elseif (preg_match('/windows|win32/i', $u_agent)) {
 $platform = 'windows';
 }
 
 // Далее получаем имя агента пользователя
 if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
 $bname = 'Internet Explorer';
 $ub = "MSIE";
 } elseif(preg_match('/Firefox/i',$u_agent)) {
 $bname = 'Mozilla Firefox';
 $ub = "Firefox";
 } elseif(preg_match('/Chrome/i',$u_agent)) {
 $bname = 'Google Chrome';
 $ub = "Chrome";
 }elseif(preg_match('/Safari/i',$u_agent)) {
 $bname = 'Apple Safari';
 $ub = "Safari";
 }elseif(preg_match('/Opera/i',$u_agent)) {
 $bname = 'Opera';
 $ub = "Opera";
 }elseif(preg_match('/Netscape/i',$u_agent)) {
 $bname = 'Netscape';
 $ub = "Netscape";
 }
 
 // в конце получаем корректный номер версии
 $known = array('Version', $ub, 'other');
 $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
 
 if (!preg_match_all($pattern, $u_agent, $matches)) {
 // совпадающие номера не были найдены, просто продолжаем
 }
 
 // смотрим, сколько у нас есть
 $i = count($matches['browser']);
 
 if ($i != 1) {
 // мы получим два раза, так как еще не использовали аргумент 'other'
 
 
 //проверяем указана ли версия до или после имени
 if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
 $version= $matches['version'][0];
 }else {
 $version= $matches['version'][1];
 }
 }else {
 $version= $matches['version'][0];
 }
 
 // проверяем, получили ли мы номер 
 if ($version == null || $version == "") {$version = "?";}
 return array(
 'userAgent' => $u_agent,
 'name' => $bname,
 'version' => $version,
 'platform'  => $platform,
 'pattern' => $pattern
 );
 }
 
 // теперь пробуем это
 $ua = getBrowser();
 $yourbrowser = "Your browser: " . $ua['name'] . " " . $ua['version'] .
 " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
 
 print_r($yourbrowser);
 ?>
 
  </body>
</html>

На моем компьютере этот код дает следующий результат. На вашем компьютере результат может быть другим.

Your browser: Google Chrome 54.0.2840.99 on windows reports: 
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
  Chrome/54.0.2840.99 Safari/537.36

Отображение изображений в случайном порядке

Функция PHP rand() используется для генерации случайного числа. Эта функция может генерировать числа в пределах заданного диапазона. Генератор случайных чисел следует сделать более непредсказуемым, чтобы не допустить генерации чисел по регулярному шаблону. Это достигается с помощью функции srand(), которая определяет начальное число генератора случайных чисел. Следующий пример демонстрирует, как вы можете показывать разные изображения каждый раз, выбирая одно из четырех изображений -

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
<html>
  <body>
 
 <?php
 srand( microtime() * 1000000 );
 $num = rand( 1, 4 );
 
 switch( $num ) {
 case 1: $image_file = "/php/images/logo.png";
 break;
 
 case 2: $image_file = "/php/images/php.jpg";
 break;
 
 case 3: $image_file = "/php/images/logo.png";
 break;
 
 case 4: $image_file = "/php/images/php.jpg";
 break;
 }
 echo "Random Image : <img src=$image_file />";
 ?>
 
  </body>
</html>

Этот код дает следующий результат:

PHP — Концепции Веб

Использование HTML-форм

Самое важное, что следует учитывать при работе с HTML-формами и PHP, это то, что любой элемент формы на HTML-странице будет автоматически доступен для PHP-скриптов. В приведенном ниже примере, попробуйте поместить исходный код в скрипт test.php.

<?php
  if( $_POST["name"] || $_POST["age"] ) {
 if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
 die ("invalid name and name should be alpha");
 }
 
 echo "Welcome ". $_POST['name']. "<br />";
 echo "You are ". $_POST['age']. " years old.";
 
 exit();
  }
?>
<html>
  <body>
 
 <form action = "<?php $_PHP_SELF ?>" method = "POST">
 Name: <input type = "text" name = "name" />
 Age: <input type = "text" name = "age" />
 <input type = "submit" />
 </form>
 
  </body>
</html>

Этот код даёт следующий результат:

PHP — Концепции Веб

Переменная PHP по умолчанию $_PHP_SELF используется для имени скрипта PHP, и когда вы нажимаете кнопку «отправить», будет вызываться тот же PHP-скрипт, что влечен за собой следующее:

Для отправки пользовательских данных в скрипт на сервере используется метод «POST». В общем существуют два метода отправки данных в скрипт на сервере, они рассмотрены в статье Методы GET & POST.

Перенаправление браузера

Функция PHP header() предоставляет необработанные заголовки HTTP в браузер — она может использоваться для редиректа в другое место. Скрипт редиректа должен размещаться в самом верху страницы, чтобы не допустить загрузку любой другой части страницы.

Место назначения редиректа указано в заголовке Location: как аргумент функции header(). После вызова этой функции можно использовать функцию exit() для прекращения парсинга остальной части кода.

В следующем примере показано, как можно перенаправить запрос браузера на другую веб-страницу. Попробуйте поместить исходный код в скрипт test.php.

<?php
  if( $_POST["location"] ) {
 $location = $_POST["location"];
 header( "Location:$location" );
 
 exit();
  }
?>
<html>
  <body>
 
 <p>Choose a site to visit :</p>
 
 <form action = "<?php $_SERVER['PHP_SELF'] ?>" method ="POST">
 <select name = "location">.
 
 <option value = "http://www.tutorialspoint.com">
 Tutorialspoint.com
 </option>
 
 <option value = "http://www.google.com">
 Google Search Page
 </option>
 
 </select>
 <input type = "submit" />
 </form>
 
  </body>
</html>

Этот код даёт следующий результат:

PHP — Концепции Веб

Отображение диалогового окна «Загрузка файла»

Иногда нам бывает нужно предоставить пользователю следующую возможность — чтобы при нажатии ссылки ему отображалось диалоговое окно «Загрузка файла», а не фактический контент. Это можно очень легко сделать с помощью HTTP-заголовка.
HTTP заголовок будет отличаться от фактического заголовка, в котором мы отправляем Content-Type со значением text/html\n\n. В этом случае тип контента будет — application / octet-stream, а к нему будет добавлено фактическое имя файла.

Например, если вы хотите сделать файл FileName загружаемым по данной ссылке, то это делается с помощью следующего синтаксиса.

#!/usr/bin/perl
 
# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
 
# Actual File Content
open( FILE, "<FileName" );
 
while(read(FILE, $buffer, 100) ){
  print("$buffer");
}

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree