Инициирование вызова файла изображения PHP

Мне назвали файл image.php и один названный index.html.

Этот код находится в index.html

<img src="image.php"> 

Теперь, это возможный для image.php файл, чтобы знать, что это назвали index.html файл?

Если так, как?

1
задан nickf 6 July 2010 в 01:14
поделиться

4 ответа

Более надежный (хотя и более запутанный) способ сделать это - сгенерировать случайный хэш для прикрепления к этой конкретной загрузке файла - но это будет работать только в том случае, если исходная страница также поддерживает php (а не только статический html).

Если вы хотите сделать это таким образом, вы можете сделать что-то вроде этого:

<?
// index.php or wherever you want to detect the source from
session_start();
$uniqid = uniqid();
$_SESSION["image_caller_$uniqid"] = $_SERVER['SCRIPT_FILENAME'];
echo "<img src='image.php?uniqid=$uniqid' />";
?>

А затем в вашем файле изображения

<?
// image.php
session_start();
$source = $_SESSION["image_caller_{$_GET['uniqid']}"];
unset($_SESSION["image_caller_{$_GET['uniqid']}"]); // Don't needlessly waste memory
// Render the image or whatever you want here
?>

Это имеет тот же эффект, что и другие предложения сделать что-то вроде , однако это гораздо сложнее подделать.

1
ответ дан 2 September 2019 в 23:17
поделиться

Браузер обычно отправляет заголовок Referer (sic) для запросов изображений, которые содержат URL-адрес страницы, содержащей ссылку на изображение.

Это доступно с помощью переменной $ _ SERVER ['HTTP_REFERER'] (обратите внимание на необычное написание).

Обратите внимание, что эта переменная не всегда точна; пользователь может решить защитить свою конфиденциальность, не отправляя заголовок реферера (используя какой-то изящный инструмент конфиденциальности), и они могут даже изменить свой браузер, чтобы отправлять все, что они хотят в этом поле. Таким образом, на него не следует полагаться при аутентификации, если вы также не принимаете во внимание, что даже легитимный пользователь мог оставить его пустым или поместить в него произвольную строку.

3
ответ дан 2 September 2019 в 23:17
поделиться

Если пользователь использует браузер, который отправляет заголовок реферера, вы можете получить к нему доступ с помощью

$_SERVER['HTTP_REFERER']

, но он полагается на то, что клиент заслуживает доверия, на что вы не можете рассчитывать.

Если вам нужен независимый от браузера метод, вы можете добавить параметр GET в свою ссылку

<img src="image.php?ref=index.html">

и получить доступ с помощью $_REQUEST['ref'], но опять же, его можно подделать.

0
ответ дан 2 September 2019 в 23:17
поделиться

Только если вы готовы доверять некоторым крайне ненадежным данным, найденным в _SERVER долларов.

-2
ответ дан 2 September 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: