LinuxForum.Fans
Тема

Проблемы с пхп

Автор: phan 2 сообщений 903 просмотров
#201519

Есть примитивный файлообемник

text

<html>
    <head>
        <title><?=$_SERVER ["HTTP_HOST"];?>: One click file hostion</title>
        <link rel="stylesheet" type="text/css" media="all" href="style.css">
    </head>
    <body>
        <table width="100%" height="100%"><tr valign="center"><td align="center" nowrap><div id="upload">
        <?php 
ini_set('display_errors',1);
error_reporting(E_ALL);
            if (isset($_FILES) && empty($_FILES['file'])) {
            
                echo 'Выберите файл для закачки | Максимальный размер файла 2000 MB<br><br>';
                echo '<form enctype="multipart/form-data" action="" method="post">';
                echo '<input type="hidden" name="MAX_FILE_SIZE" value="30000">';
                echo '<input type="file" name="file" size="45">';
                echo '<input type="submit" value=" Загрузить " name="upload">';
                echo '</form>';
                                                        echo 'К сожалению сервис находится в стадии разработки, и может не принимать некоторые файлы<br>';
            } else {
 $upload_dir = "/uploads/";
                
                $upload_path = dirname (__FILE__).$upload_dir;
$file_ext = strrchr($_FILES['file']['name'], ".");
$upload_filename = md5 (microtime())."".$file_ext;        
                $upload_link = "http://".$_SERVER ["HTTP_HOST"].dirname ($_SERVER ["PHP_SELF"]).$upload_dir.$upload_filename;
                if (move_uploaded_file ($_FILES['file']['tmp_name'], $upload_path.$upload_filename))
                {
                    echo "<b>File is valid, and was successfully uploaded.</b><br><br>";
                    echo "Download Link:<br>";
                    echo "<input type='text' size=80 onclick='this.select()' value='".$upload_link."'><br><br>";
                    echo "Download Link in HTML (for use in web sites, myspace, blogs, etc):<br>";
                    echo "<input type='text' size=80 onclick='this.select()' value=\"<a href='".$upload_link."'>".$upload_link."</a>\"><br><br>";
                    echo "Download Link in Forum code (for use in phpBB, vBulletin, etc):<br>";
                    echo "<input type='text' size=80 onclick='this.select()' value='[url]".$upload_link."[/url]'><br><br>";
                    echo "<a href='?".md5(microtime())."'>Upload another file</a>";
                } else {
                    echo "<b>Вы делаете что-то не так, или ошибки на сервере!</b>";
                }
            }
        ?>
    </div></td></tr></table></body>
</html>

почему-то загружает не все файлы, а как-то выборочно, в чём может быть проблема?

#210555
phan написал:
а как-то выборочно, в чём может быть проблема?

чуть-ли не первая ссылка в гугле.

http://webdesign.site3k.net/?/conjuncture/append/d/upload.html

В этой форме обязательно применяется метод POST, так как только этим методом допускается отправка файлов и тип кодирования multipart/form-data (как в письмах с вложением), поскольку этот запрос является запросом с вложением. Так же в ней может применяться встроенная переменная MAX_FILE_SIZE1 , указывающая допустимый размер отправляемого файла в байтах. Переменная MAX_FILE_SIZE не является обязательной, но если используется, обязана указываться до указания поля файла.

Использование переменной MAX_FILE_SIZE не гарантирует того что, посетитель не сможет отправить файл большей величины. Для ее обхода злонамеренному или небрежному посетителю достаточно использовать собственную форму на своем сайте, отправляющую запрос на ваш скрипт. Для полной гарантии, скрипт должен проверять, во-первых, переменную $HTTP_REFERER (откуда пришел запрос), во-вторых, установлена ли переменная MAX_FILE_SIZE и соответствует ли она заданному значению, в-третьих, не превышает ли размер загруженного файла значение переменной MAX_FILE_SIZE. Проверка трех этих условий дает полную гарантию того что, ситуация развивается строго по ВАШЕМУ сценарию.

потому файлы больше 30000 байтов и не загружаются.

Войдите или зарегистрируйтесь, чтобы ответить.