Как создать ссылку с помощью uuid?

Может быть, я задаю неправильный вопрос, я просто не знаю, как определить его более конкретно, извините за это.

Я хочу создать ссылки (src в теге img) это выглядит так:
«bla-bla.com/7e0cfd63-dfc1-4038-A859-ff201dea7b65«и сможет» расшифровать «его обратно.

Причина почему>

Мои ссылки (src в теге img) сейчас так выглядимMYDOMAIN / SomeFolder / image1.jpg«, так что если пользователь изменится»image1.jpg«до»image2.jpg«он получит« прямой доступ »(я думаю, это так и называется).

Поэтому я хочу предотвратить «прямой доступ», но все же иметь возможность делиться ссылками.

Может быть, я слишком усложняю проблему, и есть другой — простой способ сделать это или какое-то расширение php для этой работы, пожалуйста, дайте мне знать.

Сервер:
выиграть 2012 р2
Apache + php5 + MySQL

Постскриптум

«7e0cfd63-dfc1-4038-a859-ff201dea7b65» — это UUID, верно?
Я видел это в YouTube ссылки на видео.

Поиск в Google дал много результатов для UUID / GUID скриптов / техники / как это работает и так далее, но я не смог найти реализацию для ссылок …

P.P.S

если вы перейдете к изображению моего профиля здесь на stackoverflow:

https://www.gravatar.com/avatar/4141ef5b3f1196534e59f42f76fe0d0е?с = 48&д = identicon&г = П.Г.&е = 1

и измените F на D, вы получите другое изображение

https://www.gravatar.com/avatar/4141ef5b3f1196534e59f42f76fe0d0d?с = 48&д = identicon&г = П.Г.&е = 1

Это то, чего я не хочу.

0

Решение

Я бы предложил использовать:

  • mod_rewrite
  • скрипт PHP расшифровки и
  • ваша база данных для сопоставления UUID с путями

mod_rewrite

Вы используете это, чтобы перенаправить все URL, которые соответствуют не настоящие папка для сценария декодирования. Именование фальшивой папки imgsКонфигурация apache будет выглядеть (не проверено):

RewriteEngine on
RewriteRule ^/img/(.*)$ get_image.php?uuid=$1 [L]

Это должно соответствовать URL, как /img/7e0cfd63-dfc1-4038-a859-ff201dea7b65 и перенаправить на /get_image.php?uuid=7e0cfd63-dfc1-4038-a859-ff201dea7b65, (Ваши изображения теперь источник: src="/img/7e0cfd63-dfc1-4038-a859-ff201dea7b65")

get_image.php

Этот скрипт будет использовать базу данных, чтобы выяснить реальное местоположение изображения, которое также может находиться за пределами веб-корня вашего приложения! Однако Apache должен иметь доступ к файлу (на основании разрешений файловой системы). Для этого примера давайте предположим, что все ваши изображения в /data/mydomain/images, Ваш скрипт может выглядеть так:

$image_id = $_GET['uuid'];
// ...
$sql = "SELECT * FROM images WHERE uuid='$image_id' LIMIT 1";
$result = mysql_query($sql);
$r = mysql_fetch_array($result);

// DB has the RELATIVE path
$imagepath = "/data/mydomain/images" . $r['path'];

// Produce proper Image
header("Content-Type: image/jpeg");
header("Content-Length: " . filesize($imagepath));

echo file_get_contents("$imagepath");

Обратите внимание, что потребуется больше кода, если вы хотите поддерживать больше типов изображений / пантомимы.

База данных

Наконец, в вашей базе данных вам нужно по крайней мере два поля в images Таблица:

  • uuid: UUID изображения. Сделайте это первичным ключом или, если вы предпочитаете иметь целочисленный ключ auto_increment, индексируйте этот столбец (для производительности)
  • rpath: Относительный путь к изображению в месте хранения (например: /somefolder/image1.jpg)

Это должно быть все :). Я не проверял ничего из вышеперечисленного, но, собрав все вместе, должен достичь того, что вы хотите

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]