Для некоторых проектов необходимо защитить скачивание файлов гостям. Например, чтобы только конкретные люди, зашедшие на сайт, могли скачать файлы.
Данный хак создает форму для ввода пароля , после чего будет доступна ссылка на скачивание. Есть один момент , хак устанавливает пароль на все файлы на вашем движке DLE.
1. Открыть файл engine/download.php и найти:
$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );
Добавить ниже:
$password = "ваш_пароль"; // здесь устанавливаем ваш пароль
$p = trim($_POST['pw']);
if($p == "") {
echo <<<HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Файловый архив</title>
<link rel="stylesheet" type="text/css" href="http://site.ru/style.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<div id="c">
<form action="" method="post">
<label>Введите пароль:</label>
<input type="password" id="pw" name="pw" />
<input type="submit" value="Далее">
</form>
<div id="results"></div>
</div>
</body>
</html>
HTML;
exit;
} elseif($p == $password) {
Найти еще:
$file->download_file();
Добавить ниже:
}
Важно: в коде есть ссылка site.ru, адрес которой надо изменить на свой.
2. Создать в корне сайта файл style.css с содержимым:
/* gloabl styles */
/* @group elements */
* { margin: 0; padding: 0; }
html { height: 101%; font-family: Arial, Tahoma, sans-serif; }
body { font-size: 62.5%; background: #e8f0f7; }
h1 { font-size: 1.7em; color: #343434; margin-bottom: 20px; }
h2 { font-size: 2.0em; font-weight: normal; font-family: Helvetica, Geneva, sans-serif; color: #b0d3ed; margin-bottom: 22px; margin-top: 10px; }
p { display: block; font-size: 1.2em; color: #343434; margin-bottom: 15px; }
h2 strong { color: #86a5d5; }
input[type="text"], input[type="password"], textarea, select { outline: none; } /* hide outlines in chrome */
/* @group page boxes */
#c { width: 600px; margin: 0 auto; padding: 8px 12px; margin-top: 44px; border: 1px solid #c3d1d7; background: #fefefe; text-align: center; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; }
/* @group form */
#instantform { padding: 7px 12px; margin-bottom: 30px; margin-top: -12px; }
#instantform input[type=text], #instantform input[type=password] { background: #fefefe; font-size: 1.4em; color: #898989; font-family: Verdana, Arial, sans-serif; border: 1px solid #d5d9da; padding: 9px 7px; width: 420px; }
#instantform input[type=text]:focus, #instantform input[type=password]:focus { border-color: #b3d5eb; color: #444; }
label { display: block; margin-top: 25px; margin-bottom: 4px; color: #444; font-weight: bold; font-size: 1.2em; }