Я пытаюсь скрыть URL-адрес src для файла PDF в iframe / embed. Я не знаю, как.
Я пробовал со всеми ранее выходившими ответами, но ни один из них не работает.
<?php
$url = $_GET['url'];
?>
<embed id = "renderedPrint" style = "height:calc(100% - 4px);width:calc(100% - 4px);padding:0;margin:0;border:0;"></embed>
<script>
$(document).ready(function() {
var encryptedString = "assets/labels/" + "<?php echo $url; ?>" + ".pdf";
$("#renderedPrint").attr("src", encodeURIComponent(encryptedString));
});
</script>
Но независимо от того, какой метод я использую (обфускатор, php openssl_encrypt/decrypt), выходной URL-адрес всегда виден.
Я не хочу, чтобы пользователи находили URL-адрес iframe/embed. Я хочу затруднить или даже скрыть URL-адрес от внешнего интерфейса.
Цель состоит в том, что я не хочу, чтобы пользователи имели прямой доступ к сгенерированному файлу PDF. Они могут скопировать URL-адрес iframe src и отправить его кому-то другому. Мы не можем помешать им загрузить PDF-файл, но я не хочу, чтобы они копировали исходный URL-адрес с сервера.
Можем ли мы добраться до причины, по которой вы хотите скрыть URL-адрес? Возможно, скрытие URL — не единственный способ решить проблему, которую вы пытаетесь решить. Смотрите: xyproblem.info
В качестве примечания: «Я пробовал со всеми ранее выходившими ответами» не так уж полезно, и вместо этого помогает, если вы можете определить те, которые вы конкретно пробовали.
Привет @all, цель в том, что я не хочу, чтобы клиент имел прямой доступ к сгенерированному файлу. Они могут скопировать URL-адрес iframe src и отправить его кому-то другому. Мы не можем помешать им загрузить PDF-файл, но я не хочу, чтобы они копировали исходный URL-адрес с сервера.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


проверьте этот код вы должны добавить адрес файла в БД
<?php
// get id to search on DB and get detail
$id = $_REQUEST['id'];
try {
$conn = new PDO("pgsql:host=$host;port=5432;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
$stmt = $conn->prepare("SELECT url FROM mytable WHERE id=? LIMIT 1");
$stmt->execute([$id]);
$row = $stmt->fetch();
// the address of file in server
$path = $row['url'];
$filename = basename($path);
if (file_exists($path) && is_readable($path)) {
// get the file size and send the http headers
$size = filesize($path);
header('Content-Type: application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$filename);
header('Content-Transfer-Encoding: binary');
// open the file in binary read-only mode
// display the error messages if the file can´t be opened
$file = @ fopen($path, 'rb');
if ($file) {
// stream the file and exit the script when complete
fpassthru($file);
exit;
} else {
echo $err;
}
} else {
echo 'check that file exists and is readable';;
}
?>
@Мохаммед, что такое $filename?
Я добавил переменную $filename в код
Приведенный выше код помог вам?
Вы не можете скрыть URL-адрес, так как он должен быть доступен для браузера, чтобы содержимое запрашивалось и загружалось браузером. Вы могли бы потенциально обслуживать файл непосредственно со стороны сервера как BLOB, но пользователи по-прежнему смогут загружать контент локально - если это реальная цель здесь.