<?php
/*
Задачей данного класса является загрузка изображений
с проверками:
1. на формат,
2. на размер.
Если данный файл прошёл все проверки, класс должен будет сохранить файл в директории images
*/
// $_FILES['uploadfile']['name'];
// $_FILES['uploadfile']['size'];
// $_FILES['uploadfile']['type'];
// $_FILES['uploadfile']['tmp_name'];
class uploadImg
{
private $uploaddir = 'images';
function uploadTest()
{
function type()
{
$types = array('jpg','jpeg','gif','png');
$typefile = explode('.', $_FILES['uploadfile']['name']);
foreach ($types as $key => $value)
{
foreach($typefile as $key2 => $value)
{
if($types[$key] == $typefile[$key2])
{
$mess = true;
break;
}
}
}
if($mess != true)
$mess = false;
return $mess;
}
function size()
{
$size = 1024*1024*10;
if($_FILES['uploadfile']['size'] < $size)
$mess = true;
return $mess;
}
if(type() == true && size() == true)
{
function movement()
{
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
return true;
}
}
if(type() == true && size() == true && movement() == true)
return true;
}
}
вызываю
<?php
require './config/connectDB.php';
require './class/uploadImg.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
</body>
<form enctype="multipart/form-data" action="" method="post">
<input type="file" name='uploadfile' /><br />
<input type="submit" />
</form>
<?php
$db = new connectDB();
$obj = new uploadImg();
if($obj->uploadTest() == true)
{
$sql = "insert into images (url,img) values ('".$_FILES['uploadfile']['tmp_name']."','".$_FILES['uploadfile']['name']."')";
$result = mysql_query($sql) or die(mysql_error.'<br />'.$sql);
if($result)
echo 'Файл загружен успешно!';
}
else
echo 'Файл не был загружен!';
?>
</html>
Но почему то не работает, без функции movement, всё работало!
Спустя 1 час, 9 минут, 54 секунды (27.03.2011 - 18:24) T1grOK написал(а):
У тебя метод movement находится в условии). И не только он)
Спустя 20 минут, 42 секунды (27.03.2011 - 18:44) nugle написал(а):
T1grOK,
а почему он не работает?
а почему он не работает?
Спустя 2 минуты, 10 секунд (27.03.2011 - 18:47) T1grOK написал(а):
В коде полная анархия. Класс построен неправильно! Кроме того хромает общая логика:
Зачем повторно перепроверять тип и размер непонятно! Ведь достаточно сделать так:
И вообще, должно быть что то типа:
В сети полно готовых библиотек для аплоадинга файлов на сервер у которых весьма широкие возможности.
if(type() == true && size() == true)
{
//тра ля ля
if(type() == true && size() == true && movement() == true)
return true;
Зачем повторно перепроверять тип и размер непонятно! Ведь достаточно сделать так:
if(type() == true && size() == true && movement() == true)
{
return true;
}
И вообще, должно быть что то типа:
class uploadImg
{
private $uploaddir = 'images';
public function uploadTest(){
if($this->type() == true && $this->size() == true && $this->movement() == true){
return true;
}
}
private function type(){
$types = array('jpg','jpeg','gif','png');
$typefile = explode('.', $_FILES['uploadfile']['name']);
foreach ($types as $key => $value){
foreach($typefile as $key2 => $value){
if($types[$key] == $typefile[$key2]){
$mess = true;
break;
}
}
}
if($mess != true) $mess = false;
return $mess;
}
private function size(){
$size = 1024*1024*10;
if($_FILES['uploadfile']['size'] < $size){
$mess = true;
}
return $mess;
}
private function movement(){
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination)) return true;
}
}
В сети полно готовых библиотек для аплоадинга файлов на сервер у которых весьма широкие возможности.
Спустя 10 минут, 46 секунд (27.03.2011 - 18:57) nugle написал(а):
T1grOK,
я для себя, пробую классы писать..
всё равно не получается!пишет файл не загружен
я для себя, пробую классы писать..
всё равно не получается!пишет файл не загружен
Спустя 56 минут, 57 секунд (27.03.2011 - 19:54) T1grOK написал(а):
Вот
private function movement(){
$uploaddir = 'images';
$distination = $uploaddir.'/'.$_FILES['uploadfile']['name'];
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $destination)) return true;
}
Спустя 2 минуты, 16 секунд (27.03.2011 - 19:57) nugle написал(а):
чем он от моей отличается?
пишет типо
Warning: move_uploaded_file() [function.move-uploaded-file]: Filename cannot be empty in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'Z:\tmp\php224.tmp' to '' in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67
пишет типо
Warning: move_uploaded_file() [function.move-uploaded-file]: Filename cannot be empty in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'Z:\tmp\php224.tmp' to '' in Z:\home\fiesta.ru\www\class\uploadImg.php on line 67
Спустя 1 минута, 59 секунд (27.03.2011 - 19:59) T1grOK написал(а):
Не ну народ. Уже показал и исправил. Неужели сложно 3 строчки сравнить?)
$_FILES['userfile']['tmp_name'] => $_FILES['uploadfile']['tmp_name']
$_FILES['userfile']['tmp_name'] => $_FILES['uploadfile']['tmp_name']
Спустя 1 минута, 45 секунд (27.03.2011 - 20:00) nugle написал(а):
T1grOK
это я поменял, ошибки выше
это я поменял, ошибки выше
Спустя 11 минут, 42 секунды (27.03.2011 - 20:12) T1grOK написал(а):
Решись, у тебя $distination или $dеstination
Спустя 19 минут, 39 секунд (27.03.2011 - 20:32) nugle написал(а):
T1grOK
вот к чему приводит моя невнимательность!спасибо!
вот к чему приводит моя невнимательность!спасибо!
Спустя 9 месяцев, 19 дней, 15 часов, 35 минут, 33 секунды (17.01.2012 - 12:07) Guest написал(а):
с наслаждением прочитал диалог! )))
Интересная история получилась.
Назвал бы - история одного урока... )
Прохожий.
Интересная история получилась.
Назвал бы - история одного урока... )
Прохожий.
Спустя 55 минут, 30 секунд (17.01.2012 - 13:03) SlavaFr написал(а):
Цитата (nugle @ 27.03.2011 - 15:57) |
T1grOK, я для себя, пробую классы писать.. всё равно не получается!пишет файл не загружен |
тоесть дело не в классах, а совсем в другом.
Если бы был включен error_reporting(E_ALL), без которого я бы запрещал вообще вопросы по пхп-ошибкам задавать, то возможно проблема была бы решена раньше.
что касаетса OOP, то я бы посоветовал не пременять в классах, которые ты собераешся использовать и тестировать многократно, гловбальные переменные как $_FILES, $_POST .$_.....