Demo 01
Detect Browser Language in PHP - en
Using Desktop
Detect platform -

Demo 02
REMOTE_ADDR - 18.97.9.170
HTTP_CLIENT_IP - UNKNOWN
HTTP_X_FORWARDED_FOR - UNKNOWN


Для демонстрации примеров использования PHP с Hugo, необходимо чтобы на сервере вашего хостинга была обеспечена поддержка PHP!

Текущая версия PHP - 8.3.22
Примечание

Прежде чем просматривать представленные здесь примеры, рекомендуется ознакомиться со статьей “Использование PHP в Hugo”

Примеры вызова файлов PHP в шаблоне single.php

Исполняемые PHP-коды находятся в файлах:

php_test_01.php

Программа определяет язык вашего текущего браузера, тип устройства (мобильное устройство/планшет/настольный компьютер) и платформу (windows/android/iOS) с помощью PHP. Создайте static/php/php_test_01.php:

<?php
echo 'Detect Browser Language in PHP - ';
echo '<em><strong>' . substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) . '</strong></em>';
echo '<br>';

// Check if the "mobile" word exists in User-Agent 
// $useragent = $_SERVER [ 'HTTP_USER_AGENT' ];  
$useragent = $_SERVER["HTTP_USER_AGENT"]; 
$isMob = is_numeric(strpos(strtolower($useragent), "mobile")); 
  
// Check if the "tablet" word exists in User-Agent 
$isTab = is_numeric(strpos(strtolower($useragent), "tablet")); 
 
// Platform check  
$isWin = is_numeric(strpos(strtolower($useragent), "windows")); 
$isAndroid = is_numeric(strpos(strtolower($useragent), "android")); 
$isIPhone = is_numeric(strpos(strtolower($useragent), "iphone")); 
$isIPad = is_numeric(strpos(strtolower($useragent), "ipad")); 
$isIOS = $isIPhone || $isIPad; 
 
if($isMob){ 
    if($isTab){ 
        echo 'Using <em><strong>Tablet</strong></em> Device'; 
    }else{ 
        echo 'Using <em><strong>Mobile</strong></em> Device'; 
    } 
}else{ 
    echo 'Using <em><strong>Desktop</strong></em>'; 
} 

echo '<br> Detect platform - ';
if($isIOS){ 
    echo '<em><strong>iOS</strong></em>'; 
}elseif($isAndroid){ 
    echo '<em><strong>ANDROID</strong></em>'; 
}elseif($isWin){ 
    echo '<em><strong>WINDOWS</strong></em>'; 
}
            ?>

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

{{ define "main" }}
<section class="container">
  <h1>{{ .Title }}</h1>

  {{ readFile "static/php/php_test_01.php" | safeHTML }}
  ...
  {{ .Content }}

</section>
{{end}}

Результат…

php_test_02.php

Программа определяет IP-адрес клиента c помощью PHP

  • $_SERVER[‘REMOTE_ADDR’] определяет реальный IP-адрес подключающейся стороны. Это самое надежное значение, которое вы можете найти.
  • $_SERVER[‘HTTP_CLIENT_IP’] определяет IP-адрес, когда пользователь находится в общедоступных интернет-сервисах, но это значение легко подделать.
  • $_SERVER[‘HTTP_X_FORWARDED_FOR’] определяет IP-адрес пользователя, когда он/она находится за прокси-сервером (это значение легко подделать).
    Создайте static/php/php_test_02.php:
<?php

echo "REMOTE_ADDR - ";
if (!empty($_SERVER['REMOTE_ADDR'])) {
	echo '<em><strong>' . $_SERVER['REMOTE_ADDR'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}
echo '<br>';

echo "HTTP_CLIENT_IP - ";
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
	echo '<em><strong>' . $_SERVER['HTTP_CLIENT_IP'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}

echo '<br>';

	echo "HTTP_X_FORWARDED_FOR - ";
if (!empty($_SERVER['HTTP_X_FORWARDED'])) {
	echo '<em><strong>' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}
echo '<br>';
            ?>

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

{{ define "main" }}
<section class="container">
  <h1>{{ .Title }}</h1>

  ...
  {{ readFile "static/php/php_test_02.php" | safeHTML }}
  {{ .Content }}

</section>
{{end}}

Результат…

Пример получения доступа к переменным сайта в shortcode

Создайте shortcode layouts/shortcodes/siteurl.html:

{{ .Page.Site.BaseURL }}

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

---
# front-matter
---
1. Go to your site's url {{< siteurl >}}
2. ...

Результат:

1. Go to your site's url https://www.webpractica.ru/
2. ...

Пример передачи параметра front matter в шорткод

Создайте shortcode layouts/shortcodes/param_page.html:

{{- with index .Page.Params (.Get 0 ) -}}
{{- . -}}
{{- end -}}

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

---
# front-matter
---
1. Title: {{% param_page "title" %}}
2. Authors: ({{% param_page "author" %}})

Результат:

1. Title: Примеры использования PHP с Hugo
2. Authors: [tim]

Пример передачи параметра сайта в шорткод

Создайте shortcode layouts/shortcodes/param_site.html:

{{- with index .Page.Site.Params (.Get 0 ) -}}
{{- . -}}
{{- end -}}

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

---
# front-matter
---
1. copyright: ({{% param_site "copyright" %}})
2. description: {{% param_site "description" %}}

Результат:

1. copyright: © WebPractica, 2024
2. description: Мы поможем вам создать быстрый и безопасный веб-сайт с использованием Hugo, генератором статических сайтов, написанным на Go.

Пример вызова PHP в шорткоде

Создайте shortcode layouts/shortcodes/php.html:

<div {{ if ( .Get "class" ) }} class='{{ .Get "class" }}' {{ end }} {{ if ( .Get "title" ) }} title='{{ .Get "title" }}' {{ end }}>
  {{ .Inner | safeHTML }}
</div>

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

{{< php >}}
<?php
  echo 'Your browser: <br>' . $_SERVER['HTTP_USER_AGENT'];
?>
{{< /php >}}

Результат:

Your browser:
CCBot/2.0 (https://commoncrawl.org/faq/)

Пример доступа к переменным и параметрам Hugo из кода PHP в шорткоде

В шорткоде php, для получения значений переменных и параметров Hugo используем шорткоды: param_page, param_site и siteurl (код шорткодов приведен выше).

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

{{% php class="php" title="Demo PHP" %}}
<?php
$mem_php_title='{{% param_page "title" %}}';
echo 'Title: ' . '{{% param_page "title" %}}';
echo '<br>Authors: ' . '{{% param_page "author" %}}' . ' on the site ' . '{{< siteurl >}}';
echo '<br>Copyright: ' . '{{% param_site "copyright" %}}';
?>
<br><br>
{{% /php %}}

Результат:

Title: Примеры использования PHP с Hugo
Authors: [tim] on the site https://www.webpractica.ru/
Copyright: © WebPractica, 2024

Пример создания токена:

Пример рассмотрен на форуме - Как я могу включить PHP-код в Hugo?

Добавляем перед HTML-кодом в baseof.php и сохраняем строку в переменной сеанса ($_SESSION[’token’]):

<?php
session_start(); if (empty($_SESSION['token'])) {$_SESSION['token'] = bin2hex(random_bytes(32));}
?>

Выполняем шорткод php:

{{< php >}}
<?php
if (empty($_SESSION['token'])) {$_SESSION['token'] = bin2hex(random_bytes(32));}$token = $_SESSION['token']; $_SESSION["author"] = "[tim]"; echo '<small>Token: ' . $token . '<br>'; print_r($_SESSION) . '</small>';
?>
{{< /php >}}

Пример результата:
Token: e7d88d1e9f3146d7dc8a061f56a39fefeb4e013c6b25c3134a26e1b5b6bbc359
Array ( [token] => e7d88d1e9f3146d7dc8a061f56a39fefeb4e013c6b25c3134a26e1b5b6bbc359 [author] => [tim] )


Пример использования PHP в шаблоне Hugo

Вставьте PHP в шаблон Single.php

  <?php
  echo 'Your browser: <br>' . $_SERVER['HTTP_USER_AGENT'];
  echo '<br>Author: ' . '{{ .Params.author }}';
  ?>

Результат:

Your browser:
CCBot/2.0 (https://commoncrawl.org/faq/)
Author: [tim]