Файл: fo/upload.php
Строк: 169
<?
##########################################
## Автор: -=ШАХТЕР=- # ## Сайт: http://masteram.us # ## ICQ : 46-92-90 # ## Версия 4.0 Лицензионная #
## Данная версия скрипта является ПЛАТНОЙ, #
## вы НЕ ИМЕЕТЕ ПРАВА распрострянять данный #
## скрипт или какие-либо части его кода... #
#########################################
require'../config.php';
$align='left';
$title='Обменник - Загрузка файла';
aut();
head();
who_add(0,'enter');
function parseUA($s) {
if(preg_match('/Opera Mini/1/i', $s)) return 1;
if(preg_match('/Opera Mini/2/i', $s)) return 2;
if(preg_match('/Opera Mini/3/i', $s)) return 3;
if(preg_match('/Opera Mini/4/i', $s)) return 4;
}
function retrans($t){
$a = array('_','YA','Ya','ya','yee','YO','yo','Yo','ZH','zh','Zh','Z','z','CH','ch','Ch','SH','sh','Sh','YE','ye','Ye','YU','yu','Yu','JA','ja','Ja','A','a','B','b','V','v','G','g','D','d','E','e','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','R','r','S','s','T','t','U','u','F','f','H','h','W','w','x','q','Y','y','C','c','!');
$b = array(' ','Я','Я','я','ые','Ё','ё','Ё','Ж','ж','Ж','З','з','Ч','ч','Ch','Ш','ш','Ш','Э','э','Э','Ю','ю','Ю','Я','я','Я','А','а','Б','б','В','в','Г','г','Д','д','Е','е','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Щ','щ','ъ','ь','Ы','ы','Ц','ц','');
return str_replace($b,$a,$t);
}
function del($text)
{
$text=str_replace('"','', $text);
$text=str_replace("'",'', $text);
$text=str_replace('&','', $text);
$text=str_replace('$','', $text);
$text=str_replace('>','', $text);
$text=str_replace('<','', $text);
$text=str_replace('~','', $text);
$text=str_replace('`','', $text);
$text=str_replace('#','', $text);
$text=str_replace('*','', $text);
$text=str_replace(''','', $text);
return $text;
}
function getExt($name) {
return end(explode('.', $name));
}
function checkExt($name) {
$exts[] = '3gp';
$exts[] = '3GP';
$exts[] = '7z';
$exts[] = '7Z';
$exts[] = 'aac';
$exts[] = 'AAC';
$exts[] = 'amr';
$exts[] = 'AMR';
$exts[] = 'app';
$exts[] = 'APP';
$exts[] = 'asf';
$exts[] = 'ASF';
$exts[] = 'asx';
$exts[] = 'ASX';
$exts[] = 'avi';
$exts[] = 'AVI';
$exts[] = 'bmp';
$exts[] = 'BMP';
$exts[] = 'bmx';
$exts[] = 'BMX';
$exts[] = 'cab';
$exts[] = 'CAB';
$exts[] = 'col';
$exts[] = 'COL';
$exts[] = 'db';
$exts[] = 'DB';
$exts[] = 'deb';
$exts[] = 'DEB';
$exts[] = 'ear';
$exts[] = 'EAR';
$exts[] = 'elf';
$exts[] = 'ELF';
$exts[] = 'exe';
$exts[] = 'EXE';
$exts[] = 'flv';
$exts[] = 'FLV';
$exts[] = 'gif';
$exts[] = 'GIF';
$exts[] = 'hme';
$exts[] = 'HME';
$exts[] = 'img';
$exts[] = 'IMG';
$exts[] = 'imy';
$exts[] = 'IMY';
$exts[] = 'iso';
$exts[] = 'ISO';
$exts[] = 'jad';
$exts[] = 'JAD';
$exts[] = 'jar';
$exts[] = 'JAR';
$exts[] = 'jpeg';
$exts[] = 'JPEG';
$exts[] = 'jpg';
$exts[] = 'JPG';
$exts[] = 'ldb';
$exts[] = 'LDB';
$exts[] = 'mid';
$exts[] = 'MID';
$exts[] = 'midi';
$exts[] = 'MIDI';
$exts[] = 'mmf';
$exts[] = 'MMF';
$exts[] = 'mng';
$exts[] = 'MNG';
$exts[] = 'mov';
$exts[] = 'MOV';
$exts[] = 'mp3';
$exts[] = 'MP3';
$exts[] = 'mp4';
$exts[] = 'MP4';
$exts[] = 'mpc';
$exts[] = 'MPC';
$exts[] = 'mpeg';
$exts[] = 'MPEG';
$exts[] = 'mpg';
$exts[] = 'MPG';
$exts[] = 'mpn';
$exts[] = 'msi';
$exts[] = 'msm';
$exts[] = 'msp';
$exts[] = 'nth';
$exts[] = 'ogg';
$exts[] = 'pdf';
$exts[] = 'png';
$exts[] = 'ra';
$exts[] = 'rar';
$exts[] = 'rpm';
$exts[] = 'rtf';
$exts[] = 'scs';
$exts[] = 'sdt';
$exts[] = 'sis';
$exts[] = 'srt';
$exts[] = 'swf';
$exts[] = 'thm';
$exts[] = 'tsk';
$exts[] = 'txt';
$exts[] = 'utz';
$exts[] = 'war';
$exts[] = 'wav';
$exts[] = 'wbmp';
$exts[] = 'wmv';
$exts[] = 'xpi';
$exts[] = 'zip';
$exts[] = 'tar';
$exts[] = 'gz';
$exts[] = 'bz2';
$found = false;
foreach($exts as $key=>$value) {
if(getExt($name) == $value) {
$found = true;
break;
}
}
if(!$found) return false;
else return true;
}
function getWithoutPath($filename) {
return end(explode("/", $filename));
}
function p20repl($fn) {
return str_replace('%20', ' ', $fn);
}
$fid = check(intval($_GET['fid']));
$fid2 = check(intval($_GET['fid2']));
if (isset($_GET['fid'])&&isset($_GET['fid2'])){
$cat = @$db->sql_fetchrow($db->sql_query("select * from `fo_cat` where id = '".$fid."'" ));
$cat2 = @$db->sql_fetchrow($db->sql_query("select * from `fo_cat2` where id = '".$fid2."'" ));
echo menu.'<a href="/fo">Oбменник</a>|<a href="/fo/'.$cat['id'].'"><b>'.$cat['name'].'</b></a>|<b>'.$cat2['name'].'</b>'.div;
if(!is_dir($cat2['path'])) die('Такой папки не существует!');
if (empty($act)){
if ($_GET['halp']=='passprices'){
echo 'За каждый загруженный файл вы получаете деньги чата. За один мегабайт загруженных данных вам на счет зачисляется '.$set['rur_1mb'].' рубль.<br/>Также вы можете устанавливать цену на свой пароль (0 - пароль нельзя будет купить).
';
echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
}
if ($ver=='wml'){
echo 'Загрузка файлов доступна только в xHTML версии!';
echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
}
echo '<b>Перед загрузкой ознакомтесь с правилами:</b><br />
1) Запрещенно загружать файлы в несоответствующюю им категорию.<br />
2) В описании запрещено использовать нецензурную лексику.<br />
3) За нурещение 1 и 2 пункта, ваш файл будет удален, а вы наказанны!<br /><br />';
echo '<form action="?act=act&'.SID.'" method="post" enctype="multipart/form-data">';
echo '<input type="radio" name="fileupl" value="f" id="fuid" checked><label for="fuid">Загрузить файл</label><br/>';
switch(parseUA($_SERVER['HTTP_USER_AGENT'])) {
case 1:
case 2:
echo '<b>*</b>Файл:<br/>';
echo '<input name="file_opera" value="" /><a href="op:fileselect">Выбрать файл</a><br/>';
case 3:
case 4:
default:
echo '<b>*</b>Файл:<br/>';
echo '<input type="file" name="file" /><br/>';
break;
}
echo '<input type="radio" name="fileupl" value="u" id="uuid"><label for="uuid">Загрузить по ссылке</label><br/><input type="text" name="url" value="http://" /><br/><br/>';
echo '<b>*</b>Имя:<br/><input type="text" name="name" value="" /><br/>';
echo '<b>*</b>Описание:<br/><input type="text" name="desc" value="" /><br/>';
echo 'Пароль:<br/><input type="password" name="password" value="" /><br/>';
echo 'Цена пароля (рублей), 0 - купить нельзя:<br/><input type="text" name="price" value="0" size="4" /> (<a href="?halp=passprices">Информация</a>)<br/>';
$chislo=rand(1000,9999);
$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");
$db->sql_query("INSERT INTO `chislo` (chislo,ip) values('$chislo','".$ip."')");
echo ' <b>'.$chislo.'</b><br/><b>*</b>Проверочный код:<br/>
<input type="text" name="code" size="4" maxlength="4" title="code"/><br/>';
echo '<br /><input type="submit" class="ibutton" name="send" value="Отправить!" /></form><br/>';
}else{
$password = check($_POST['password']);
if(($_POST['password']!='')&&(!preg_match('!^[a-z0-9]+$!i',$_POST['password'])))$err = 'В пароле обнаружены запрешенные знаки!';
if($_POST['fileupl'] == '') $_POST['fileupl'] = 'f';
if($_POST['fileupl'] == 'f') {
if(isset($_POST['file_opera'])) {
$uploadedfile = $_POST['file_opera'];
if(strlen($uploadedfile)) {
if(strlen($uploadedfile) > 1024*1024*$set['fo_size']) $err = 'Размер файла превышает '.$set['fo_size'].' Мб.';
$array = explode('file=', $uploadedfile);
$tmp_name = $array[0];
$filebase64 = $array[1];
}
if (strlen($filebase64)) {
$name = $tmp_name;
$fname = $name;
$fnames=$name; //имя
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}
if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}
if(!checkExt($name))$err = 'Запрещенный формат файла<br/>';
$FileName = $cat2['path'].$password.del(check(retrans($name)));
if(file_exists($FileName)) $err = 'Файл уже существует';
if (empty($err)){
$filedata = base64_decode($filebase64);
$file = @fopen($FileName, "wb");
if($file){
if(flock($file, LOCK_EX)){
fwrite($file, $filedata);
flock($file, LOCK_UN);
}
fclose($file);
}
$path = $FileName;
}
}
} elseif(isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
if(!checkExt($_FILES['file']['name'])) $err = 'Запрещенный формат файла<br/>';
$fnames=$_FILES['file']['name']; //имя
$fname = strtolower($_FILES['file']['name']);
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}
if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}
if($_FILES['file']['size'] > 1024*1024*$set['fo_size']) {
$err = 'Размер файла превышает '.$set['fo_size'].' Мб.';
}
$FileName = $cat2['path'].$password.del(check(retrans($_FILES['file']['name'])));
if(file_exists($FileName)) $err = 'Файл уже существует';
if (empty($err)){
copy($_FILES['file']['tmp_name'], $FileName);
$path = $cat2['path'].$password.del(check(retrans($_FILES['file']['name'])));
}
} else {
$err = 'Ошибка загрузки файла: '.$_FILES['file']['error'].'<br/>';
}
} elseif($_POST['fileupl'] == 'u') {
if($_POST['url'] == '') {
$err = 'Вы не ввели ссылку на файл!';
}
$f = @fopen($_POST['url'], 'r');
if(!$f) {
$err = 'Файл по ссылке <b>'.check($_POST['url']).'</b> недоступен. Возможно, он был удален или вы ввели неверную ссылку.</b>';
}
if(!checkExt($_POST['url'])) {
$err = 'Запрещенный формат файла<br/>';
}
$parametr = explode('#',trim($_POST['url']));
if(!isset($parametr[1])) $parametr[1] = basename(trim($parametr[0]));
$ex = pathinfo(trim($parametr[0]));
$ext = strtolower($ex['extension']);
$fname = $parametr[1];
$fnames=$parametr[1]; //имя
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {
$err = 'Файлы такого типа запрещены!';
}
$ext2 = explode(".", $fname);
if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}
if (strlen($fname) > 30) {
$err = 'Длина названия файла не должна превышать 30 символов!';
}
if (eregi("[^a-z0-9.()+_-]", $fname)) {
$err = '<br />В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}
while($c = fread($f, 1024)) $filedata .= $c;
if(strlen($filedata) > 1024*1024*$set['fo_size']) {
$err = 'Размер файла превышает <b>'.$set['fo_size'].' Мб</b>.';
}
$FileName = $cat2['path'].$password.del(check(retrans(getWithoutPath($_POST['url']))));
if(file_exists($FileName)) $err = 'Файл уже существует';
if (empty($err)){
fclose($f);
$_POST['url'] = p20repl($_POST['url']);
file_put_contents($FileName, $filedata);
$path = $cat2['path'].$password.del(check(retrans(getWithoutPath($_POST['url']))));
}
}
$desc = check($_POST['desc']);
if (strlen2($desc)<5)$err = 'Короткое описание!';
$online = $db->sql_fetchrow($db->sql_query("SELECT * FROM `chislo` WHERE `ip` = '".$ip."'"));
if($online['chislo'] != intval($_POST['code']))$err = 'Проверочный код введен неверно!';
if (empty($err)){
$name = check($_POST['name']);
$price = check(intval($_POST['price']));
$infolder = dirname($path).'/';
$size = filesize($path);
$query = $db->sql_query("INSERT INTO `fo_files` (`user_id`, `path`, `name`, `infolder`, `size` , `timeupload`, `about`, `pass`, `price`) VALUES ('$user[id]', '$path', '$name', '$infolder' , '$size' , '$time', '$desc', '$password', '$price');");
chmod($path, 0644);
if ($query){
if($size < 1048576) $size = 0;
else if($size > 1048576) $size = round($size/1024/1024);
$rur = $user['rur']+($set['rur_1mb']*$size);
$db->sql_query('UPDATE `users` SET `rur` = "'.$rur.'" WHERE `id` = "'.$user['id'].'"');
$user['fo_files']++;
$db->sql_query('UPDATE `users` SET `fo_files` = "'.$user['fo_files'].'" WHERE `id` = "'.$user['id'].'"');
header ('Location: /fo/'.$fid.'/'.$fid2.'?'.SID); exit;
}else echo 'Ошибка загрузки!';
}else echo $err;
}
}else{
echo 'Такой папки не существует';
}
echo "<br/>";
echo gb.'<a href="/fo">Обменник</a>'.div;
echo gb.'<a href="/enter">Прихожая</a>'.div;
foot();
?>