Как использовать PHP для кодирования пути к файлу?

Как можно скрыть путь к видео и сделать ссылку на него зашифрованной, чтобы пользователям было сложнее скачать видео?
  • 17 августа 2024 г. 6:23
Ответы на вопрос 3
1. Использование PHP для кодирования пути к файлу:

Для кодирования пути к файлу с помощью PHP вы можете использовать функцию base64_encode(). Вот пример кода, который показывает, как это можно сделать:

```php
$file_path = '/path/to/file/video.mp4';
$encoded_path = base64_encode($file_path);
echo $encoded_path;
```

2. Скрытие пути к видео и зашифрование ссылки:

Чтобы скрыть путь к видео и зашифровать ссылку, вы можете использовать комбинацию PHP и .htaccess файлов. 

1. Создайте скрипт PHP, который будет отдавать видео файл на основе запроса с зашифрованным путем к файлу. Примерно так:

```php
$encoded_path = $_GET['file'];
$decoded_path = base64_decode($encoded_path);

if (file_exists($decoded_path)) {
    header('Content-Type: video/mp4');
    readfile($decoded_path);
} else {
    echo 'Файл не найден';
}
```

2. Создайте .htaccess файл в той же директории, где находятся ваши видео файлы, с правилом перенаправления запросов на ваш скрипт PHP:

```
RewriteEngine On
RewriteRule ^video/(.*)$ video.php?file=$1 [L]
```

Теперь, чтобы получить ссылку на видео, вам нужно будет передать зашифрованный путь к файлу на ваш скрипт PHP:

```
https://example.com/video/base64encodedpath
```

Таким образом, пользователь не сможет просто скопировать путь к видео и скачать его, так как он не будет иметь прямого доступа к файлам. Вместо этого, он будет получать видео через ваш защищенный скрипт PHP.
"закодировать путь к файлу",  "зашифрованную ссылку" никак не спасет от скачивания, чтобы показать пользователю видео, оно в любом случае доставляется ему. Пытаются защитить через DRM и подобное, но уже совсем другой уровень
у меня получился такой код <br/> <br/> <pre><code>$timeout = 100; // время
$filesdir = "videofiles/"; // Слешь в конце
//
$secret = md5((int)(time() / $timeout)); //Всегда целое число, меняется раз в $timeout секунд;
if( isset($_GET['key']) ) {
if( ($_GET['key'] == $secret) &amp;&amp; //проверка ключа
strlen($_GET['fn']) &amp;&amp; file_exists($filesdir.$_GET['fn']) ) { //проверка файла
readfile($filesdir.$_GET['fn']);die; //читаем файл
} else {
header ( 'HTTP/1.1 404 Not Found' );//Файл не найден
die;
}
}</code></pre> <br/> <br/> на выводе <br/> <br/> <pre><code>&lt;video width=\"320\" height=\"240\" controls&gt;
&lt;source src=\"?fn=video.mp4&amp;key=$secret\" type=\"video/mp4\"&gt;
Your browser does not support the video tag.
&lt;/video&gt;</code></pre> <br/> <br/> он мне подходит, но не работает почему-то только в браузере SAFARI
Похожие вопросы