Вход Регистрация
Файл: core/admin/upload.php
Строк: 202
<?php

if (!defined('BLOG')) { die('Access Denied!'); }

show_header('Загрузка Файлов');

if ((((!isset(
$_POST['url']) || $_POST['url'] == 'http://' || $_POST['url'] == '') && (!isset($_FILES['f']) || $_FILES['f']['error'][0])) && !isset($_POST['f'])) || !isset($_POST['name']) || !isset($_POST['chmod'])) {
 
echo 
'<div class="downlist2"><form action="?a=upload" method="post" enctype="multipart/form-data">' . (!empty($_REQUEST['post_id']) ? 'ID Статьи: <input type="text" name="post_id" value="' request('post_id') . '" size="3" /><br/>' '') . 'URL:<br/><textarea name="url" type="text" rows="3" style="width:90%;" wrap="off">http://</textarea><br/>Заголовки:<br/><textarea rows="3" style="width:90%;" name="headers">User-Agent: ' htmlspecialchars(@$_SERVER['HTTP_USER_AGENT'], ENT_NOQUOTES) . "n" 'Cookie: ' "n" 'Referer: ' "n" 'Accept: ' htmlspecialchars(@$_SERVER['HTTP_ACCEPT'], ENT_NOQUOTES) . "n" 'Accept-Charset: ' htmlspecialchars(@$_SERVER['HTTP_ACCEPT_CHARSET'], ENT_NOQUOTES) . "n" 'Accept-Language: ' htmlspecialchars(@$_SERVER['HTTP_ACCEPT_LANGUAGE'], ENT_NOQUOTES) . "n" 'Connection: Close' "n" '</textarea><br/>Файл ( разрешено ' ini_get('upload_max_filesize') . ') ' . (empty($_REQUEST['post_id']) ? '<a href="#" onclick="files(1);">[+]</a> / <a href="#" onclick="files(0);">[-]</a>' '') . '<br/><div id="fl"><input type="file" name="f[]" style="width:90%;margin-top:3px;" /><br/></div>Сохранить файл как:<br/><input type="text" name="name" value="' ROOTPATH '/files/" style="width:90%;" /><br/><input onkeypress="return number(event)" type="text" name="chmod" value="0644" size="4" maxlength="4" style="width:28pt;"/> CHMOD<br/><input type="text" name="set_time_limit" value="3600" size="5" style="width:28pt;"/ > Ограничение по времени (сек)<br/><input type="checkbox" name="ignore_user_abort" checked="checked" /> Продолжать даже если закрыть старницу<br/><br/><input type="submit" value="Загрузить"/></form></div>';

if (empty(
$_REQUEST['post_id'])) {
echo <<<HTML
<script type="text/javascript">
function number(b){var a=(typeof b.charCode=="undefined"?b.keyCode:b.charCode);if(b.ctrlKey||b.altKey||a<32){return true}a=String.fromCharCode(a);return/[d]/.test(a)}function files(e){var h=document.createElement("input");h.setAttribute("name","f[]");h.setAttribute("type","file");h.setAttribute("style","width:90%;margin-top:3px;");var g=document.getElementById("fl");if(e==1){g.insertBefore(h,null);g.appendChild(document.createElement("br"))}else{var a=g.getElementsByTagName("input");var c=g.getElementsByTagName("br");if(a.length>0){var d=a[a.length-1];d.parentNode.removeChild(d);var b=c[c.length-1];b.parentNode.removeChild(b)}}};
</script>
<noscript><div class="message_warning">Для прикрепления файлов, требуется поддержка JS в вашем браузере!!!</div></noscript>
HTML;
}

} else {
 
    if (!
$_FILES['f']['error'][0]) {

        
$all sizeof($_FILES['f']['tmp_name']);
        if (
$all 1) {
            if (
substr($_POST['name'], -1) != '/') {
                
$_POST['name'] .= '/';
            }
        }
        for (
$i 0$i $all; ++$i ) {

            echo 
upload_files($_FILES['f']['tmp_name'][$i], $_FILES['f']['name'][$i], $_POST['name'], $_POST['chmod']);
            
//chmod(ROOTPATH . '/files/' .  $_FILES['f']['name'][$i], octdec('0644'));
        
}
    } else {

        echo 
upload_url($_POST['url'], $_POST['name'], $_POST['chmod'], $_POST['headers']);
        
//chmod(ROOTPATH . '/files/' .  $_POST['name'], octdec('0644'));
    
}

    if (!empty(
$_POST['post_id'])) {

         
$pid intval($_POST['post_id']);

         
$_POST['name'] = !empty($_POST['name']) ? str_replace('files','',basename($_POST['name'])) : '';

         if (!empty(
$_POST['name'])) {

             
$filename basename($_POST['name']);
         }
         else if (!empty(
$_POST['url']) && $_POST['url'] <> 'http://') {

             
$filename basename($_POST['url']);
         }
         else if (!empty(
$_FILES['f']['name'][0])) {

             
$filename basename($_FILES['f']['name'][0]);
         }

         if (!empty(
$filename) && @file_exists(ROOTPATH '/files/' $filename)) {

             
$size = @filesize(ROOTPATH '/files/' $filename);

             
$db->query("INSERT INTO ?_list_file SET `post` = ?, `name` = ?, `size` = ?"$pid$filename$size );

             echo 
'<div class="downlist2"><span style="color:green;">Файл успешно прикреплён к статье!</span><br /></div>';

         }
         else echo 
'<div class="downlist2"><span style="color:red;">Не удалось найти файл!</span><br /></div>';

         echo 
'<div class="downlist2"><img src="' ICONS 'add.png" alt=""/> <a href="?a=upload&amp;post_id=' $pid '">Загрузить ещё...</a><br />
         <img src="' 
ICONS 'return.png" alt=""/> <a href="/' gen_uri('post'$pid) . '">Назад к статье</a><br /></div>';

    }
    else echo 
'<div class="downlist2"><img src="' ICONS 'add.png" alt=""/> <a href="?a=upload">Загрузить ещё...</a><br /></div>';
}

function 
error()
{
    
$err error_get_last();
    if (
$err) {
        return 
$err['message'] . ' (' $err['file'] . ': ' $err['line'] . ')';
    } else {
        return 
'Неизвестная ошибка';
    }
}

function 
upload_files($tmp ''$name ''$dir ''$chmod '0644')
{
    
$fname $name$out = array();

    if (
substr($dir, -1) != '/') {
        
$name basename($dir);
        
$dir dirname($dir) . '/';
    }

    
$name str_ireplace('.php''.php.txt'$name); 
    
$name str_ireplace('htaccess''htaccess.txt'$name);


    if ( @
file_put_contents($dir $name, @file_get_contents($tmp)) ) {

        @
chmod($dir $nameoctdec($chmod));
        
unlink($tmp);
        
$out[] = '<span style="color:green;">Файл Загружен -&gt; ' htmlspecialchars($fname ' -> ' .$dir $nameENT_NOQUOTES) . '</span>';
    } else {
        @
unlink($tmp);
        
$out[] =  '<span style="color:red;">Файл не Загружен -&gt; ' htmlspecialchars($fname ' x ' .$dir $nameENT_NOQUOTES) . '</span>';
        
$out[] = 'Ошибка: ' error();
    }
    return 
'<div class="downlist2">' implode('<br />'$out) . '</div>';
}


function 
upload_url($url ''$name ''$chmod '0644'$headers '')
{
    if (isset(
$_POST['set_time_limit'])) {
        
set_time_limit($_POST['set_time_limit']);
    }
    if (isset(
$_POST['ignore_user_abort'])) {
        
ignore_user_abort(true);
    }

    
ini_set('user_agent'str_ireplace('User-Agent:'''trim($headers)));
        
    
$tmp = array();
    
$url trim($url);

    if (
strpos($url"n") !== false) {
        foreach (
explode("n"$url) as $v) {
            
$v trim($v);
            
$tmp[] = array($v$name basename($v));
        }
    } else {
        
$last substr($name, -1);
        
$temp false;
        if (
$last != '/' && is_dir($name)) {
            
$name .= '/';
            
$temp true;
        }

        if (
$last != '/' && !$temp) {
            
$name dirname($name) . '/' basename($name);
        } else {
            
$h = @get_headers($url1);
            
$temp false;
            if (isset(
$h['Content-Disposition'])) {
                
preg_match('/.+;s+filename=(?:")?([^"]+)/i'$h['Content-Disposition'], $arr);
                if (isset(
$arr[1])) {
                    
$temp true;
                    
$name $name basename($arr[1]);
                }
            }
            if (!
$temp) {
                
$h parse_url($url);
                
$name $name basename($h['path']);
            }
        }
        
$tmp[] = array($url$name);
    }

    
$out = array();
    foreach (
$tmp as $v) {
        
$dir dirname($v[1]);
        if (!
is_dir($dir)) {
            
mkdir($dir'0755');
        }
        
$v[1] = str_ireplace('.php''.php.txt'$v[1]); 
        
$v[1] = str_ireplace('htaccess''htaccess.txt'$v[1]);
        
$r = @copy($v[0], $v[1]);

        if (
$r) {
            @
chmod($v[1], octdec($chmod));
            
$out[] = '<span style="color:green;">Файл Загружен -&gt; ' htmlspecialchars($v[0] . ' -> ' $v[1], ENT_NOQUOTES) . '</span>';
        } else {
            
$out[] = '<span style="color:red;">Файл не Загружен -&gt; ' htmlspecialchars($v[0] . ' x ' $v[1], ENT_NOQUOTES) . '</span>';
            
$out[] = 'Ошибка: ' error();
        }
    }

    return 
'<div class="downlist2">' implode('<br />'$out) . '</div>';
}

?>
Онлайн: 0
Реклама