Файл: backup/down/up.php
Строк: 128
<?php
function getExt($name){
return end(explode('.', $name));
}
require_once('../core/start.php');
func::is_auth();
$praz = core::$dbs->queryFetch("SELECT * FROM `down_pr` WHERE `id` = ? LIMIT 1",array($id));
if(empty($praz['id'])){
header('location:/');
exit();
}
$raz = core::$dbs->queryFetch("SELECT * FROM `down_r` WHERE `id` = ? LIMIT 1",array($praz['id_r']));
$title = 'Загрузка файла';
require_once(root.'core/header.php');
echo '<div class="wizart">'.$title.'</div>';
if($_POST['imp']==0){
if(isset($_POST['ok'])){
$name = func::check($_POST['name']);
$about = func::check($_POST['about']);
if(empty($name) or strlen($name)>100){$err = 'Что-то с названием файла! Или оно слишком длинное, или вы вообще его не ввели!';}
if(empty($about)){$err = 'Вы не ввели описание файла!';}
if($_FILES['file']['size'] > 1024*60*1024){$err = 'Размер файла превышает 60 мб.!';}
if(core::$dbs->querySingle("SELECT COUNT(id) FROM `down` WHERE `name` = ?",array($name))==1){
$err = 'Такой файл уже есть!';}
$file = func::retrans(func::del($_FILES['file']['name']));
$ext = strtolower(strrchr($file, '.'));
$file = HTTPHOME.'_'.rand(1000,9999).'_'.$file;
$type_upload = getExt($file);
$tp = explode(',',$raz['type']);
$cc = count($tp);
$type_no_error = false;
for($i=0;$i<$cc;$i++){
if($type_upload==$tp[$i]) $type_no_error = true;
}
if(!$type_no_error) $err = 'Запрещенный формат файла';
/*if(preg_match('/(.php|.pl|.phpb|.htmlb|.htmb|.phtmb|.inib|.perlb|.htaccess)/i', $file)){
$err = 'Запрещенный формат файла!';}*/
if(empty($err)){
$uploaddir = 'down/'.$file;
if(copy($_FILES['file']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/files/'.$uploaddir)){
core::$dbs->query("INSERT INTO `down` SET `id_r` = ?, `id_pr` = ?, `time` = ?, `last` = ?, `name` = ?, `value` = ?, `file` = ?, `user_id` = ?, `type` = ?",array($raz['id'],$praz['id'],time(),time(),$name,$about,$uploaddir,$user['id'],0));
header('location: /down/file/'.core::$dbs->lastInsertId());}
}
}
}else{
function getWithoutPath($filename){
return end(explode("/", $filename));
}
function p20repl($fn){
return str_replace('%20', ' ', $fn);
}
if($_POST['import'] == ''){
$err .= 'Вы не ввели ссылку на файл!';
}
$f = @fopen($_POST['import'], 'r');
if(!$f){
$err .= 'Файл по ссылке <b>'.func::check($_POST['import']).'</b> недоступен.</b>';
}
$parametr = explode('#',trim($_POST['import']));
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]; //имя
$type_upload = getExt($fnames);
$tp = explode(',',$raz['type']);
$cc = count($tp);
$type_no_error = false;
for($i=0;$i<$cc;$i++){
if($type_upload==$tp[$i]) $type_no_error = true;
}
if(!$type_no_error) $err = 'Запрещенный формат файла<br/>';
/*if(preg_match('/(.php|.pl|.phpb|.htmlb|.htmb|.phtmb|.inib|.perlb|.htaccess)/i', $fnames)){
$err .= 'Файлы такого типа запрещены!';
}*/
$ext2 = explode(".", $fname);
/*if (count($ext2) != 2) {
$err = 'Запрещены файлы не имеющие имени, расширения, или с двойным расширением.';
}
*/
if(strlen($fname)>250){
$err = 'Длина названия файла не должна превышать 250 символов!';
}
if (preg_match("/[^a-z0-9.()+_-]/i", $fname)){
$err = '<br />В названии файла "<b>'.$fname.'</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.';
}
while($c = fread($f, 1024)) $filedata .= $c;
if(strlen($filedata) > 1024*1024*30){
$err .= 'Размер файла превышает <b>30 Мб</b>.';
}
$FileName = 'down/'.HTTPHOME.'_'.rand(1000,9999).'_'.func::retrans(func::del($fname));
$adres = $FileName;
fclose($f);
$_POST['import'] = p20repl($_POST['import']);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/files/'.$adres, $filedata);
$name = func::check($_POST['name']);
$about = func::check($_POST['about']);
if(empty($name) or strlen($name)>100){$err = 'Что-то с названием файла! Или оно слишком длинное, или вы вообще его не ввели!';}
if(core::$dbs->querySingle("SELECT COUNT(id) FROM `down` WHERE `name` = ?",array($name))==1){
$err = 'Такой файл уже есть!';}
if(empty($about)){
$err = 'Вы не ввели описание файла!';}
if(empty($err)){
core::$dbs->query("INSERT INTO `down` SET `id_r` = ?, `id_pr` = ?, `time` = ?, `last` = ?, `name` = ?, `value` = ?, `file` = ?, `user_id` = ?, `type` = ?",array($raz['id'],$praz['id'],time(),time(),$name,$about,$adres,$user['id'],0));
header('location: /down/file/'.core::$dbs->lastInsertId());}
}
func::error($err);
echo '<form action="/down/up/'.$id.'" method="post" enctype="multipart/form-data">Разрешенные форматы: <font color="red"><b>'.$raz['type'].'</b></font><br/>* Название:<br/><input type="text" name="name"/><br/>* Описание:<br/><textarea name="about"></textarea><br/>
Файл:<br/><input type="file" name="file"/><br/>
<input type="radio" name="imp" value="1"> Импорт<br/>Ссылка для импорта:<br/>
<input type="text" value="http://" name="import"/><br/>
<input type="submit" name="ok" value="Загрузить"/></form>';
echo '<div class="main"><img src="/down/ext/dir.gif" alt="*"/> <a href="/down">ЗЦ</a> / <a href="/down/pr/'.$raz['id'].'">'.$raz['name'].'</a> / <a href="/down/files/'.$praz['id'].'">'.$praz['name'].'</a></div>';
func::footer_menu();
require_once(root.'core/footer.php');
?>