Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 23.11.2015
Сообщений: 90

Не соображу как переделать скрипт

17.04.2016, 15:16. Показов 961. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет народ. Есть несколько файлов сейчас я их опишу. мне нужно сделать так чтобы был статический метод по загрузке файлов, чтобы не приходилось создавать объектов.
Например:
UploadText::uploadFile($file) вместо этого
$upload_text = new UploadText();
$success_text = $upload_text->uploadFile($_FILES["text"]);


Содержание файлов.
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
    require_once "lib/uploadtext_class.php";
    require_once "lib/uploadimage_class.php";
    if($_POST["upload"]){
        $upload_text = new UploadText();
        $upload_image = new UploadImage();
        $success_text = $upload_text->uploadFile($_FILES["text"]);
        $success_image = $upload_image->uploadFile($_FILES["image"]);
    }
?>
 
<html>
<head>
    <title>Загрузка файлов</title>
</head>
<body>
    <h1>Загрузка файлов</h1>
    <?php
        
        if ($_POST["upload"]){
            if ($success_text) echo "Текстовый файл успешно загружен";
            else echo "Ошибка при загрузке текстового файла";
            echo "</br>";
            if ($success_image) echo "Изображение успешно загружено";
            else echo "Ошибка при загрузке изображения";
        }
        
    ?>
    <form name="myform" action="7.php" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>Изображение:<td>
                <td>
                    <input type="file" name="image"/>
                </td>
            </tr>
            <tr>
                <td>Текст:<td>
                <td>
                    <input type="file" name="text"/>
                </td>
            </tr>
            <tr>
                <td colspan = "2">
                    <input type="submit" name="upload" value="Загрузка">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
 
 
 
 
Файл upload_class.php
<?php
    abstract class Upload{
        
        protected $dir;
        protected $mime_types;
        
        public function uploadFile($file){
            if (!$this->isSecurity($file))return false;
            $uploadfile = $this->dir."/".$file['name'];
            return move_uploaded_file($file["tmp_name"],$uploadfile);
        }
        
        protected function isSecurity($file){
            $blacklist = array(".php",".phtml",".php3",".php4",".html",".htm");
            foreach($blacklist as $item){
                if (preg_match("/$item\$/i",$file["name"])) return false;
            }
            $type = $file["type"];
            for ($i = 0; $i < count($this->mime_types);$i++){
                if ($type == $this->mime_types[$i])break;
                if ($i + 1 == count($this->mime_types))return false;
            }
            
            $size = $file["size"];
            if ($size > 2048000)return false;
            return true;
        }
    }
 
?>
 
 
 
Файл uploadimage_class.php
 
<?php
    require_once "upload_class.php";
 
    class UploadImage extends Upload {
        
        protected $dir = "images";
        protected $mime_types = array("image/png","image/jpeg","image/gif");
    }
 
?>
 
 
 
Файл uploadtext_class.php
 
<?php
    require_once "upload_class.php";
 
    class UploadText extends Upload {
    
        
        protected $dir = "text";
        protected $mime_types = array("text/plain");
    }
    $upload_text = new UploadText();
?>


Подскажите как написать этот статический метод.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2016, 15:16
Ответы с готовыми решениями:

Подскажите как переделать скрипт
Всем привет ! Подскажите как переделать этот скрипт ,чтобы к примеру после запуска файла &quot;ZaxarGameBrowser.exe&quot; стартовал звук...

Как переделать js скрипт на php?
Здравствуйте. Есть вот такой js скрипт https://jsfiddle.net/j7nquh3t/4/ . &lt;input type=&quot;text&quot; class=&quot;start&quot;...

Как переделать ajax скрипт?
Здравствуйте, помогите с ajax скриптом, у меня есть скрипт на js &lt;script type=&quot;text/javascript&quot;...

7
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.04.2016, 00:07
интересно, зачем..
Меняйте свойства и методы на статические с помощью ключевого слова static, меняйте обращения к ним - вместо $this-> исользуйте self::, parent:: или static:: (или название класса, если сильно хочется), в зависимости от ваших нужд. Что это и как можете почитать на офф сайте.
0
1 / 1 / 1
Регистрация: 23.11.2015
Сообщений: 90
18.04.2016, 21:23  [ТС]
Пробовал. Все равно никак не соображу как это сделать. А нужно просто для общего развития)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.04.2016, 21:31
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
    require_once "lib/uploadtext_class.php";
    require_once "lib/uploadimage_class.php";
    if($_POST["upload"]){
        $success_text = UploadText::uploadFile($_FILES["text"]);
        $success_image = UploadImage::uploadFile($_FILES["image"]);
    }
?>
 
<html>
<head>
    <title>Загрузка файлов</title>
</head>
<body>
    <h1>Загрузка файлов</h1>
    <?php
        
        if ($_POST["upload"]){
            if ($success_text) echo "Текстовый файл успешно загружен";
            else echo "Ошибка при загрузке текстового файла";
            echo "</br>";
            if ($success_image) echo "Изображение успешно загружено";
            else echo "Ошибка при загрузке изображения";
        }
        
    ?>
    <form name="myform" action="7.php" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>Изображение:<td>
                <td>
                    <input type="file" name="image"/>
                </td>
            </tr>
            <tr>
                <td>Текст:<td>
                <td>
                    <input type="file" name="text"/>
                </td>
            </tr>
            <tr>
                <td colspan = "2">
                    <input type="submit" name="upload" value="Загрузка">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
 
 
 
 
Файл upload_class.php
<?php
    abstract class Upload{
        
        protected static $dir;
        protected static $mime_types;
        
        public static function uploadFile($file){
            if (!self::isSecurity($file))return false;
            $uploadfile = self::$dir."/".$file['name'];
            return move_uploaded_file($file["tmp_name"],$uploadfile);
        }
        
        protected static function isSecurity($file){
            $blacklist = array(".php",".phtml",".php3",".php4",".html",".htm");
            foreach($blacklist as $item){
                if (preg_match("/$item\$/i",$file["name"])) return false;
            }
            $type = $file["type"];
            for ($i = 0; $i < count(self::$mime_types);$i++){
                if ($type == self::$mime_types[$i])break;
                if ($i + 1 == count(self::$mime_types))return false;
            }
            
            $size = $file["size"];
            if ($size > 2048000)return false;
            return true;
        }
    }
 
?>
 
 
 
Файл uploadimage_class.php
 
<?php
    require_once "upload_class.php";
 
    class UploadImage extends Upload {
        
        protected static $dir = "images";
        protected static $mime_types = array("image/png","image/jpeg","image/gif");
    }
 
?>
 
 
 
Файл uploadtext_class.php
 
<?php
    require_once "upload_class.php";
 
    class UploadText extends Upload {
    
        
        protected static $dir = "text";
        protected static $mime_types = array("text/plain");
    }
?>
не проверял
1
1 / 1 / 1
Регистрация: 23.11.2015
Сообщений: 90
18.04.2016, 21:55  [ТС]
Круто!!)) понял где были ошибки. Но теперь интересно почему он путь к папке images и text не находит. Он загружает картинку и текст в корневой каталог, где денвер установлен. Нужно полный путь прописать?

Добавлено через 9 минут
Все исправил) спасибо большое. Подскажи ссылку на оф сайт. Про классы почитать поподробнее)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.04.2016, 22:41
php.net
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
19.04.2016, 00:18
https://wiki.php.net/rfc/incompat_ctx
0
 Аватар для Точкару
0 / 0 / 1
Регистрация: 28.12.2015
Сообщений: 85
06.12.2016, 13:02
На 63 строке обращение
Цитата Сообщение от KOPOJI Посмотреть сообщение
self::$dir
является пустым. Поэтому файлы закидывает в корень каталога.
Как сделать, чтобы они попадали в
Цитата Сообщение от KOPOJI Посмотреть сообщение
$dir = "images"
и
Цитата Сообщение от KOPOJI Посмотреть сообщение
$dir = "text"
?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2016, 13:02
Помогаю со студенческими работами здесь

Как переделать скрипт для массива
Пример: есть 2 строки (по 3 поля в каждой): &lt;tr&gt;&lt;input type=&quot;number&quot; id=&quot;val1&quot; value=&quot;0&quot; /&gt; + &lt;input type=&quot;number&quot;...

Не соображу как составить запрос
mssql 2008 есть таблица ID Дата Статус 1 2013-10-18 00:00:00.000 получен с заправки 1 2013-10-20 00:00:00.000 установлен ...

Отчет из формы поиска!Ну ни как не соображу)
Здравствуйте. Очень прошу помочь. Есть база данных с формой поиска frmSearch и нужно сделать чтоб результаты поиска выводились в отчет. Так...

Не соображу как создать такой запрос?
есть таблица ОБОРУДОВАНИЕ(код оборудования, название оборудования) и ЖУРНАЛ_РЕМОНТОВ(код ремонта, код оборудования, дата, описание ремонта,...

Никак не соображу, как делать дальше!
Привет! Это снова я! У меня опять проблема! Большую часть уже сделала, но дальше не идет. Само задание: После того, как вызвали из файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru