Файл: obmen/down.php
Строк: 204
<?php
// ФайлоОбменнег
// Mod by Gemorroj
require 'config.php';
$d = $did = $_GET['d'];
$f = $fid = $_GET['f'];
$date = date('d.m.y');
$time = date('H:i');
echo $resultus;
switch ($_GET['action']) {
default:
if (!$d) {
echo $top . '<div class="red">Произошла ошибка! Не выбран каталог</div>' . $foot;
exit;
}
$title_dir = name($d);
echo $top . '<div class="w"><img src="data/images/dir_big.png" alt=""/>' . $title_dir . '<br/></div>';
if (!preg_match("/[^a-z0-9_@+-]/i", $d)) {
$dir = opendir($d); //открываем текущую директорию
$k_files = 0;
while ($file = readdir($dir)) {
if ($file != '.' && $file != '..' && $file[0] != '.' && strrchr($file, '.') != '.php' && strrchr($file, '.') != '.dat') {
$a[$k_files]['name'] = $file;
$a[$k_files]['time'] = filemtime("$d/$file");
$a[$k_files]['size'] = round(filesize("$d/$file") / 1024, 2); // в килобайтах
$k_files++;
}
} //записываем все что есть в массив
closedir($dir); //Закрываем
} else {
echo 'ПАШШОЛ НАХУЙ ЕБЛАН!';
exit;
}
function sfiles($str1, $str2) {
if ($str1['time'] == $str2['time']) {
return 0;
} elseif ($str1['time'] < $str2['time']) {
return 1;
} else {
return - 1;
}
}
@usort($a, 'sfiles');
$total = sizeof($a); #считаем
$start = intval($_GET['start']);
if ($total < $start + $downlist) {
$end = $total;
} else {
$end = $start + $downlist;
}
for ($i = $start; $i < $end; $i++) {
$filtime = $a[$i]['time'] + 432000; //Сколько файл считать новым сейчас уст. на 5 суток
if ($filtime > $_SERVER['REQUEST_TIME']) {
echo '<div class="border">(new) <a href="down.php?action=ob&d=' . $d . '&f=' . $a[$i]['name'] . '&' . SID . '">' . $a[$i]['name'] . '</a> (' . $a[$i]['size'] . ' kb)<br/></div>';
} else {
echo '<div class="border"><img src="data/images/file.png" alt=""/> <a href="down.php?action=ob&d=' . $d . '&f=' . $a[$i]['name'] . '&' . SID . '">' . $a[$i]['name'] . '</a> (' . $a[$i]['size'] . ' kb)<br/></div>';
}
$filename = $a[$i]['name'];
$te = @file("data/$filename.dat");
$u = explode('|', $te[0]);
if ($u[0] == '') {
$u[0] = 0;
}
if (pathinfo($filename, PATHINFO_EXTENSION) == 'jar') {
$filename = str_replace('.jar', '.jad', $filename);
$te2 = file("data/$filename.dat");
$filename = str_replace('.jad', '.jar', $filename);
$u2 = explode('|', $te2[0]);
if ($u2[0] == '') {
$u2[0] = 0;
}
$u[0] = $u[0] + $u2[0];
}
$opis = @file("$d/$filename.dat");
$komment = explode('|:|:|:|', $opis[0]);
$opis = $komment[0];
$added = $komment[1];
if ($added) {
echo 'Добавил: ' . $added . '<br/>';
}
echo 'Cкачиваний: ' . $u[0];
$tit = @round($u[2] / $u[1], 1);
if ($u[1] == '') {
$u[1] = 0;
}
echo '<br/>Рейтинг: ' . $tit . '/<strong>' . $u[1] . '</strong>';
$filev = @file("data/$filename.dat");
$totalv = sizeof($filev) - 1;
$data1 = explode('|', $filev[$totalv]);
if ($data1[4] == '') {
$data1[4] = 0;
}
echo '<br/><a href="down.php?action=komm&d=' . $d . '&f=' . $a[$i]["name"] . '&' . SID . '">Комментарии</a> (' . $data1[4] . ')<br/>';
}
if (!$total) {
echo '<div class="red">Пока нет файлов<br/></div>';
}
# постраничный вывод
if ($start != 0) {
echo '<div class="border"><a href="down.php?start=' . ($start - $downlist) . '&d=' . $d . '&' . SID . '">Назад |</a> ';
}
if ($total > $start + $downlist) {
echo ' <a href="down.php?start=' . ($start + $downlist) . '&d=' . $d . '&' . SID . '">| Далее</a></div>';
}
echo '<div class="border">Всего файлов: ' . $total . '<br/></div>' . $foot;
break;
case 'count':
$currHour = date('H');
$currDate = date('d F, Y');
$currTime = date("$currHour:i:s");
$currDate = str_replace('January', 'января', $currDate);
$currDate = str_replace('February', 'февраля', $currDate);
$currDate = str_replace('March', 'марта', $currDate);
$currDate = str_replace('April', 'апреля', $currDate);
$currDate = str_replace('May', 'мая', $currDate);
$currDate = str_replace('June', 'июня', $currDate);
$currDate = str_replace('July', 'июля', $currDate);
$currDate = str_replace('August', 'августа', $currDate);
$currDate = str_replace('September', 'сентября', $currDate);
$currDate = str_replace('October', 'октября', $currDate);
$currDate = str_replace('November', 'ноября', $currDate);
$currDate = str_replace('December', 'декабря', $currDate);
if (file_exists("$did/$fid")) {
header("Location: $did/$fid");
$f = file("data/$fid.dat");
$u = explode('|', $f[0]);
$g = trim($u[0] + 1);
$t = $g . '|' . $u[1] . '|' . $u[2] . '|' . $currDate;
$t = str_replace("rn", '', $t);
$rd = 0;
$file = file("data/$fid.dat");
$fp = fopen("data/$fid.dat", 'a+');
flock($fp, LOCK_EX);
ftruncate($fp, 0);
for ($i = 0, $all = sizeof($file); $i < $all; $i++) {
if ($rd != $i) {
fputs($fp, $file[$i]);
} else {
fputs($fp, "$trn");
}
}
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
chmod("data/$fid.dat", 0666);
} else {
$resultus = $top . '<div class="red">Ошибка, невозможно найти требуемый вам файл ' . $did . '/' . $fid . '</div>' . $foot;
}
break;
//////////////////////////////////////////////////////////////////
//Запись и вывод рейтинга
case 'vote':
if ($_SESSION['votus'] == $fid) {
echo $top . '<div class="red">Вы уже оценили этот файл!<br/>» <a href="down.php?action=ob&d=' . $d . '&f=' . $fid . '&' . SID . '">К Описанию</a></div>' . $foot;
exit;
}
if (!file_exists("data/$fid.dat")) {
echo $top . '<div class="red">Вы не можете оценивать т.к. никто еще не скачивал файл<br/>» <a href="?action=ob&d=' . $d . '&f=' . $fid . '&' . SID . '">К Описанию</a></div>' . $foot;
exit;
}
if (file_exists("$d/$fid")) {
$f = file("data/$fid.dat");
$u = explode('|', $f[0]);
$g = trim($u[1] + 1);
$g2 = trim($u[2] + intval($_POST['ocenka']));
$t = $u[0] . '|' . $g . '|' . $g2 . '|' . $u[3];
$rd = 0;
$file = file("data/$fid.dat");
$fp = fopen("data/$fid.dat", 'a+');
flock($fp, LOCK_EX);
ftruncate($fp, 0);
for ($i = 0, $all = sizeof($file); $i < $all; $i++) {
if ($rd != $i) {
fputs($fp, $file[$i]);
} else {
fputs($fp, $t);
}
}
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
chmod("data/$fid.dat", 0666);
echo $top . '<div class="red">Спасибо, ваша оценка: <strong>"' . $_POST['ocenka'] . '"</strong> принята<br/></div>';
$votus = $fid;
session_register('votus');
$te = file("data/$fid.dat");
$u = explode('|', $te[0]);
$tit = round($u[2] / $u[1], 1);
echo 'Всего оценивало: ' . $u[1] . '<br/>Средняя оценка: ' . $tit . '<br/>» <a href="down.php?action=ob&d=' . $d . '&f=' . $fid . '&' . SID . '">К Описанию</a>' . $foot;
} else {
echo $top . '<div class="red">Ошибка, невозможно открыть требуемый вам файл ' . $fid . '<br/></div>' . $foot;
}
break;
//////////////////////////////////////////////////////
// Вывод камментов
case 'komm':
echo $top . '<div class="input">
<form action="down.php?action=addkomm&f=' . $f . '&d=' . $d . '&' . SID . '" method="post" name="REPLIER">
<div>
Ваше имя<br/>
<input name="name" type="text" maxlength="10"><br/>
<strong>Сообщение</strong><br/>
<textarea cols="25" rows="3" name="msg"></textarea><br/>
Транслит<input name="trans" type="checkbox" value="y"><br/>
<input type="submit" value="Написать">
</div>
</form>
</div>';
$file = @array_reverse(@file("data/$f.dat"));
$total = sizeof($file) - 1;
$start = intval($_GET['start']);
if ($total < $start + $maxpostdown) {
$end = $total;
} else {
$end = $start + $maxpostdown;
}
for ($i = $start; $i < $end; $i++) {
$data = explode('|', $file[$i]);
$i2 = round($i + 1);
$data[0] = preg_replace("/((https?|ftp)://[[:alnum:]_=/-]+(\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/%]*(\?[[:alnum:]?+&_=/%]*)?)?)/i", '<a href="$1">$1</a>', $data[0]);
$data[5] = str_replace("rn", '', $data[5]);
echo '<div class="border"><strong> ' . $data[3] . '</strong><small> (' . $data[2] . ' / ' . $data[1] . ')</small></div>' . $data[0] . '<br/>';
}
if ($start != 0) {
echo '<div class="border"><a href="down.php?action=komm&d=' . $d . '&f=' . $f . '&start=' . ($start - $maxpostdown) . '&' . SID . '">Назад</a> ';
}
if ($total > $start + $maxpostdown) {
echo ' <a href="down.php?action=komm&d=' . $d . '&f=' . $f . '&start=' . ($start + $maxpostdown) . '&' . SID . '">Далее</a><br/></div>';
}
echo $foot;
break;
////////////////////////////////////////////////////////////////
// Запись комментариев
case 'addkomm':
$msg = $_POST['msg'];
$name = $_POST['name'];
$str = strlen($msg);
if (!$msg || $str < 6) {
echo $top . '<div class="red">Вы не написали комментарий или он слишком короткий<br/>
» <a href="?action=komm&d=' . $d . '&f=' . $f . '&' . SID . '">Вернуться</a><br/>
» <a href="?action=ob&d=' . $d . '&f=' . $f . '&' . SID . '">К Описанию</a></div>' . $foot;
exit;
}
if (!$name) {
echo $top . '<div class="red">Вы не ввели имя<br/>
» <a href="?action=komm&d=' . $d . '&f=' . $f . '&' . SID . '">Вернуться</a><br/>
» <a href="?action=ob&d=' . $d . '&f=' . $f . '&' . SID . '">К Описанию</a></div>' . $foot;
exit;
}
if (!file_exists("data/$f.dat")) {
echo $top . '<div class="red">Вы не можете комментировать т.к. никто еще не скачивал файл<br/>
» <a href="?action=komm&d=' . $d . '&f=' . $f . '&' . SID . '">Вернуться</a><br/>
» <a href="?action=ob&d=' . $d . '&f=' . $f . '&' . SID . '">К описанию</a></div>' . $foot;
exit;
}
if ($_POST['trans'] == 'y') {
$msg = trans($msg);
}
$name = iconv_substr($name, 0, 12, 'UTF-8');
$name = trim(htmlspecialchars($name));
$msg = iconv_substr($msg, 0, 1024, 'UTF-8');
$msg = nl2br(trim(htmlspecialchars($msg)));
///////////////////////////////////////////
//приступаем к записи
$file = file("data/$f.dat");
$total = sizeof($file) - 1;
$data1 = explode('|', $file[$total]);
$me = $data1[4] + 1;
$text = $msg . '|' . $date . '|' . $time . '|' . $name . '|' . $me . '|';
$text = str_replace("rn", '', $text);
$fp = fopen("data/$f.dat", 'a+');
flock($fp, LOCK_EX);
fputs($fp, "$textrn");
flock($fp, LOCK_UN);
fclose($fp);
chmod("data/$f.dat", 0666);
$fo = file('local.dat');
$u = explode('|', $fo[0]);
$g = trim($u[5] + 1);
$t = $u[0] . '|' . $u[1] . '|' . $u[2] . '|' . $u[3] . '|' . $u[4] . '|' . $g . '|' . $u[6];
$fp = fopen('local.dat', 'a+');
flock($fp, LOCK_EX);
ftruncate($fp, 0);
fputs($fp, $t);
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
chmod('local.dat', 0666);
$file = file("data/$f.dat");
$i = sizeof($file);
if ($i >= $maxmesdown) {
$fp = fopen("data/$f.dat", 'w');
flock($fp, LOCK_EX);
unset($file[1]);
fputs($fp, implode('', $file));
flock($fp, LOCK_UN);
fclose($fp);
chmod("data/$f.dat", 0666);
}
echo $top . '<div class="red">Ваш комментарий успешно добавлен!<br/>
» <a href="?action=komm&d=' . $d . '&f=' . $f . '&' . SID . '">Вернуться</a><br/>
» <a href="?action=ob&d=' . $d . '&f=' . $f . '&' . SID . '">К Описанию</a></div>' . $foot;
break;
///////////////////////////////////////////////////////////////
// выводим описание
case 'ob':
if (!$d || !$f) {
echo $top . '<div class="red">Произошла ошибка! Не выбрана категория или файл<br/></div>' . $foot;
exit;
} //контроль
if (file_exists("$d/$f.dat")) {
echo $top . '<div class="border">' . $f . '<br/></div>';
if (!preg_match("/[^a-z0-9_@+-]/i", $d) && (!preg_match("/[^a-z0-9_@+.-]/i", $f))) {
$opis = @file_get_contents("$d/$f.dat");
$komment = explode('|:|:|:|', $opis);
if ($komment['0'] != '') {
echo 'Описание: ' . $komment['0'] . '<br/>';
}
if ($komment['1'] != '') {
echo 'Добавил: ' . $komment['1'] . '<br/>';
}
} else {
echo 'ПАШШОЛ НАХУЙ ЕБЛАН!';
exit;
}
} else {
echo $top . '<div class="border">' . $f . '<br/></div>Описания нет<br/>';
}
$siz = round(filesize("$d/$f") / 1024, 2);
if (file_exists("$d/$f.JPG")) {
echo '<br/>Скриншот:<br/><img src="' . $d . '/' . $f . '.JPG" alt=""/>';
} elseif (file_exists("$d/$f.GIF")) {
echo '<br/>Скриншот:<br/><img src="' . $d . '/' . $f . '.GIF" alt=""/>';
}
echo '<strong><a href="down.php?action=count&d=' . $d . '&f=' . $f . '&' . SID . '">Скачать</a></strong> (' . $siz . ' kb)';
$jar_file = str_replace('.jar', '', $f);
if (file_exists("$d/$jar_file.jad")) {
echo '<br/><strong><a href="down.php?action=count&d=' . $d . '&f=' . $jar_file . '.jad&' . SID . '">Скачать JAD</a></strong>';
}
$sn = explode('/', $_SERVER['SCRIPT_NAME']);
echo '<br/><input name="text" value="http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/' . $d . '/' . $f . '"/>';
$te = @file("data/$f.dat");
$u = explode('|', $te[0]);
if ($u[0] == '') {
$u[0] = 0;
}
if (pathinfo($f, PATHINFO_EXTENSION) == 'jar') {
$f = str_replace('.jar', '.jad', $f);
$te2 = file("data/$f.dat");
$f = str_replace('.jad', '.jar', $f);
$u2 = explode('|', $te2[0]);
if ($u2[0] == '') {
$u2[0] = 0;
}
$u[0] = $u[0] + $u2[0];
}
echo '<br/>Cкачиваний: ' . $u[0];
if (!empty($u[3])) {
echo '<br/>Последнее скачивание: ' . $u[3];
}
$file = @file("data/$f.dat");
$total = sizeof($file) - 1;
$data1 = explode('|', $file[$total]);
if ($data1[4] == '') {
$data1[4] = 0;
}
$tit = @round($u[2] / $u[1], 1);
if ($u[1] == '') {
$u[1] = 0;
}
echo '<br/><a href="down.php?action=komm&d=' . $d . '&f=' . $f . '&' . SID . '">Комментарии</a> (' . $data1[4] . ')<br/>
Рейтинг: ' . $tit . '/<strong>' . $u[1] . '</strong><br/>
<div class="input">
<form action="down.php?action=vote&d=' . $d . '&f=' . $f . '&' . SID . '" method="post" name="vote">
<div>
Оценить<br/>
<select name="ocenka">
<option value="10">10</option>
<option value="9">9</option>
<option value="8">8</option>
<option value="7">7</option>
<option value="6">6</option>
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
</select>
<input name="fid" type="hidden" value="' . $f . '">
<input type="submit" value="Oценить">
</div>
</form>
</div>';
echo '<div class="border">» <a href="down.php?d=' . $d . '&' . SID . '">Назад</a><br/></div>' . $foot;
break;
}
?>