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 в 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 %}}
Результат:
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]