<?php
if(isset($_POST['upload'])){
// Список разрешенных файлов
$Shell_Check = array(".php", ".phtml", ".php3", ".php4");
foreach ($Shell_Check as $item) {
if(preg_match("/$item\$/i", $_FILES['file']['name'])) {
die(" «Приезжали тут великие деятели - правильной, неправильной ориентации. И меня начали упрекать, что я осудил эту «голубятню».
Ну, не нравятся мне «голубые», я и сказал, что не нравятся. Видите ли, министры отдельные иностранных дел обиделись на меня.
Чего на меня обижаться?» ");
}
}
list($width_img, $height_img, $type_img) = $size = getimagesize($_FILES['userfile']['tmp_name']);
if (($width_img > 150) || ($height_img > 150)) {
die("Аватарка не должна привышать 100x100");
}
if($_FILES["file"]["size"] > 1024*500) {
die("Файл превышает допустимый размер в 500 Кб");
}
$folder = '../users/'; // Директория в которую будет загружен файл
$uploadedFile = $folder.basename($_FILES['userfile']['name']);
if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)){
echo "Вы успешно загрузили картинку";
}
else {
die("Во время загрузки файла произошла ошибка");
}
}
else {
die("Файл не загружен");
}
}
else {
die('Вы загружаете запрещенный тип файла');
}
?>
<form enctype="multipart/form-data" method="POST" action="upload.php">
<input type="file" name="upload" id="upload" />
<input type="submit" id="upload" value="Загрузить аватарку" name="upload">
</form>
Все время Файл не загружен.Не знаю почему.Помогите :huh:
Спустя 10 минут, 2 секунды (12.07.2011 - 23:14) Лена написал(а):
1. Дайте разные названия полям формы. А то сервер тихо сходит с ума.
Например, переназовите:
<input type="submit" id="upload_" value="Загрузить аватарку" name="upload_">
Тогда и по приходе данных надо:
if(isset($_POST['upload_'])){
2. После
if(isset($_POST['upload_'])){
сделайте print_r($_FILES); - посмотрите, что пришло на сервер.
3. Посылаете вы данные с name="upload", а ловите их везде то $_FILES['userfile']['tmp_name'], то $_FILES['file']...
Надо: $_FILES['upload']['tmp_name'] и т.д.
Например, переназовите:
<input type="submit" id="upload_" value="Загрузить аватарку" name="upload_">
Тогда и по приходе данных надо:
if(isset($_POST['upload_'])){
2. После
if(isset($_POST['upload_'])){
сделайте print_r($_FILES); - посмотрите, что пришло на сервер.
3. Посылаете вы данные с name="upload", а ловите их везде то $_FILES['userfile']['tmp_name'], то $_FILES['file']...
Надо: $_FILES['upload']['tmp_name'] и т.д.
Спустя 8 минут, 35 секунд (12.07.2011 - 23:22) ensemplix написал(а):
Большое спасибо,просто 3 разных скрипта насобирал с точки защиты скрипт хороший?
Спустя 9 минут, 25 секунд (12.07.2011 - 23:32) Лена написал(а):
Честно говоря, плохой )
Вот это мне вообще не понравилось - $Shell_Check = array(".php", ".phtml", ".php3", ".php4");
Я любой файл обзову как asdf.php и он пройдет вашу проверку.
Можно делать защиту через exif_imagetype()
Вот это мне вообще не понравилось - $Shell_Check = array(".php", ".phtml", ".php3", ".php4");
Я любой файл обзову как asdf.php и он пройдет вашу проверку.
Можно делать защиту через exif_imagetype()
Спустя 5 минут, 50 секунд (12.07.2011 - 23:37) ensemplix написал(а):
Не правда попробовал залить себе пхп скрипт.Не грузит
Спустя 4 минуты, 47 секунд (12.07.2011 - 23:42) ensemplix написал(а):
А вот все другое можно.Не могли бы мне помочь модифицировать чутка скрипт? что бы был белый лист.с 4 типами изображений ?
Спустя 12 минут, 47 секунд (12.07.2011 - 23:55) inpost написал(а):
ensemplix
Скрипт плохой, потому что нельзя просто писать DIE и останавливать работу, надо возвращать человека на форму загрузки и как минимум делать предупреждение, что нельзя загрузить файл по какой-либо причине.
Можешь посмотреть скрипт загрузки тут: irbis-team.com , там работает.
Причины, почему может не загружаться: некорректное имя (только английские буквы сделай), отсутствуют права на папку, куда загружаешь, надо поставить 777 (иногда хватает и 755).
Скрипт плохой, потому что нельзя просто писать DIE и останавливать работу, надо возвращать человека на форму загрузки и как минимум делать предупреждение, что нельзя загрузить файл по какой-либо причине.
Можешь посмотреть скрипт загрузки тут: irbis-team.com , там работает.
Причины, почему может не загружаться: некорректное имя (только английские буквы сделай), отсутствуют права на папку, куда загружаешь, надо поставить 777 (иногда хватает и 755).
Спустя 2 минуты, 21 секунда (12.07.2011 - 23:57) ensemplix написал(а):
Цитата (inpost @ 12.07.2011 - 20:55) |
ensemplix Скрипт плохой, потому что нельзя просто писать DIE и останавливать работу, надо возвращать человека на форму загрузки и как минимум делать предупреждение, что нельзя загрузить файл по какой-либо причине. Можешь посмотреть скрипт загрузки тут: irbis-team.com , там работает. Причины, почему может не загружаться: некорректное имя (только английские буквы сделай), отсутствуют права на папку, куда загружаешь, надо поставить 777 (иногда хватает и 755). |
Покажи нам пример.О мастер!
Спустя 1 минута, 46 секунд (12.07.2011 - 23:59) inpost написал(а):
ensemplix
http://irbis-team.com/15/13/2
http://irbis-team.com/15/13/2
Спустя 3 минуты, 10 секунд (13.07.2011 - 00:02) inpost написал(а):
ensemplix
И вообще, ты пишешь какой-то бред. Я тебе чётко говорю, что незагрузилось могло быть по причине отсутствия прав на папку 777, в ответ ты мне: "Покажи пример"... какой пример? Как ставить права доступа на папку? Ну это относится даже к управлению операционных систем вопрос, чтобы понимать, о чём я говорю, введи в гугле и почитай про права, что значит каждая из цифр.
Пример прост, открыл far, подключился к серверу, навёл указатель на папку и нажал F4 и поставил галочки на всех правах. В чём проблема?! А именно в том, что мой пример может быть тебе бесполезен, если ты работаешь на денвере, или в другой операционной системе, так почему бы просто не почитать обычный мануал операционных систем, как устанавливаются права на папку, файл и т.д. в документациях к твоей операционной системе?
И вообще, ты пишешь какой-то бред. Я тебе чётко говорю, что незагрузилось могло быть по причине отсутствия прав на папку 777, в ответ ты мне: "Покажи пример"... какой пример? Как ставить права доступа на папку? Ну это относится даже к управлению операционных систем вопрос, чтобы понимать, о чём я говорю, введи в гугле и почитай про права, что значит каждая из цифр.
Пример прост, открыл far, подключился к серверу, навёл указатель на папку и нажал F4 и поставил галочки на всех правах. В чём проблема?! А именно в том, что мой пример может быть тебе бесполезен, если ты работаешь на денвере, или в другой операционной системе, так почему бы просто не почитать обычный мануал операционных систем, как устанавливаются права на папку, файл и т.д. в документациях к твоей операционной системе?
Спустя 3 минуты, 3 секунды (13.07.2011 - 00:05) ensemplix написал(а):
Не знаю кто говорит больший бред,прочти внимательно топик.Все теперь работает.Я про то как улучшить скрипт.Ах,и что такое права на папки я знаю.
А еще я ответил до того как ты подправил топик.Научись контролировать себя или отыдхать чаще.А то от набивания постов нервы уже шалят.
Ну а вообще спасибо за ссылку.Серьезно..посмотри как ты рейджишь по пустикам) я предложил тебе показать как правильнее сделать скрипт с ответом.Ибо я лучшее не могу.
А еще я ответил до того как ты подправил топик.Научись контролировать себя или отыдхать чаще.А то от набивания постов нервы уже шалят.
Ну а вообще спасибо за ссылку.Серьезно..посмотри как ты рейджишь по пустикам) я предложил тебе показать как правильнее сделать скрипт с ответом.Ибо я лучшее не могу.
Спустя 8 минут, 51 секунда (13.07.2011 - 00:14) inpost написал(а):
ensemplix
Улучшить: убрать DIE вообще, а сделать так, чтобы в случае ошибки - она выводилась рядом с формой загрузки.
Ты уверен, что 100х100 ? :)
$folder = '../users/'; - используй абсолютные пути через DOCUMENT_ROOT, а не такие, потому что удобнее ориентироваться и управлять скриптом вне зависимости от его положения.
в $_FILES так же может передаваться ошибка и причина ошибки, у тебя это никак не проверяется, а значит отсутствует банальный контроль за этим.
Улучшить: убрать DIE вообще, а сделать так, чтобы в случае ошибки - она выводилась рядом с формой загрузки.
if (($width_img > 150) || ($height_img > 150)) {
die("Аватарка не должна привышать 100x100");
Ты уверен, что 100х100 ? :)
$folder = '../users/'; - используй абсолютные пути через DOCUMENT_ROOT, а не такие, потому что удобнее ориентироваться и управлять скриптом вне зависимости от его положения.
в $_FILES так же может передаваться ошибка и причина ошибки, у тебя это никак не проверяется, а значит отсутствует банальный контроль за этим.
Спустя 8 минут, 14 секунд (13.07.2011 - 00:22) ensemplix написал(а):
Цитата (inpost @ 12.07.2011 - 21:14) |
ensemplix Улучшить: убрать DIE вообще, а сделать так, чтобы в случае ошибки - она выводилась рядом с формой загрузки. if (($width_img > 150) || ($height_img > 150)) { Ты уверен, что 100х100 ? :) $folder = '../users/'; - используй абсолютные пути через DOCUMENT_ROOT, а не такие, потому что удобнее ориентироваться и управлять скриптом вне зависимости от его положения. в $_FILES так же может передаваться ошибка и причина ошибки, у тебя это никак не проверяется, а значит отсутствует банальный контроль за этим. |
Немножко не понял про последний пункт.
Спустя 1 минута, 13 секунд (13.07.2011 - 00:24) inpost написал(а):
$_FILES['userfile']['error'] - код ошибки