Это мой index.php:
<?php
require_once('includes/settings.php');
require_once('includes/functions/images.php');
$_SESSION['userisonpage'] = true;
В файле настроек есть session_start и несколько вещей, например база данных Connection:
<?php
error_reporting(0);
// ini_set('session.gc_maxlifetime', 180);
session_start();
Теперь у меня есть файл image.php, который получает GET-параметр после определенного правила перезаписи.
RewriteRule ^images/items/(.+)$ /index.php?image=$1 [L,QSA]
Пока все хорошо. Затем image.php проверяет, установлена ли переменная $ _SESSION ['userisonpage'] - session перед загрузкой изображения. Я не знаю почему, но результат всегда ложный и показывает файл «hotlink.jpg» - даже если изображение загружается внутри веб-страницы.
<?php
if(isset($_GET['image'])){
$path = '/data/web/123456/html/abc/images/';
$file = trim($_GET['image']);
if(file_exists($path.'items/'.$file)){
if($_SESSION['userisonpage'] === true){
echo file_get_contents($path.'items/'.$file);
}else{
echo file_get_contents($path.'hotlink.jpg');
}
}else{
header('location: https://abc.de/');
}
die;
}
?>
РЕДАКТИРОВАТЬ # 1
Хорошо, я узнал, что когда я вызываю изображение с URL
http://abc.de/images/items/test.jpg
Идентификатор сеанса всегда другой, когда я вызываю одно и то же изображение с URL
http://abc.de/?image=test.jpg
идентификатор сессии остается прежним.
Так что, похоже, проблема между сессиями и перезаписью модов.
Редактировать # 2:
Теперь я узнал, что когда я вызываю изображение с этим URL
http://abc.de/images/items/test.php // <-- !!! PHP-extension !!!
и замените .php в параметре get на .jpg
if(isset($_GET['image'])){
$path = '/data/web/123456/html/abc/images/';
$file = trim($_GET['image']);
$file = str_replace('.php', '.jpg', $file); // <-- replace the extension
if(file_exists($path.'items/'.$file)){
также загружает переменную сеанса и изображение, как и должно быть.