|
|
|
| Человек вводит фотографию в фотоальбом на сервер.
Как проверить размер фотографии высоту не более 500 пикселей перед загрузкой на сайт. | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 19:46)
| | хотите защититься от лукавого? :) | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 19:46)
| | getimagesize(); | |
|
|
|
|
|
|
|
для: Slo_Nik
(01.11.2010 в 19:51)
| | но фотография ещё не введена и не записана на сайт
<input type="file" name="image" />
так ввожу её в форме. | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 19:53)
| | И что вы тогда хотите? Можно с клиента эти данные передать посредством Ajax, но ведь его можно и отключить, если вы о защите. А иным способом только загрузив и проверив временный файл на это условие, принимаете решение о его пермещении в каталог или нет. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2010 в 19:56)
| | но фотография ещё не введена и не записана на сайт
<input type="file" name="image" />
так ввожу её в форме.
в принимающей проверяю вводил ли посетительфотографию
if (!empty($_FILES['image']['tmp_name']))
{... }
Вот тут бы и проверить перед перезаписью на сервер какая она по размеру.
Пока проверяю только вес и .ext
$ext = strrchr($_FILES['image']['name'], ".");
$ext = strtolower($ext);
echo $ext."<br />";
if ($_FILES["image"]["size"] > 300*1024){ .... } | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 19:59)
| | Значит так - if (!empty($_FILES['image']['tmp_name'])) вы можете сделать тогда и только тогда, когда изображение уже на сервере, то есть закачано. То что вы его не переместили еще в папку свою, совсем не означет, что оно еще у пользователя. Поэтому getimagesize($_FILES['image']['tmp_name']), а $_FILES["image"]["size"] - это не размер изображения в пикселях, а размер его в байтах! Прочтите еще раз и внимательней мануал, и книгу свою. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2010 в 20:33)
| | Вы невнимательно прочитали -
if ($_FILES["image"]["size"] > 300*1024){ .... } - вот так я проверяю . Пикселей здесь и в помине нет. Это вес. Интересует как записать проверку в пикселях. | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 20:55)
| | Вам же ответили — getimagesize() | |
|
|
|
|
|
|
|
для: Киналь
(01.11.2010 в 20:57)
| | Для временных файлов в учебнике есть только такое:
echo ($_FILES["filename"]["name"]);
echo "размер файла: ";
echo ($_FILES["filename"]["size"]);
echo "каталог: ";
echo ($_FILES["filename"]["tmp_name"]);
echo "тип файла: ";
echo ($_FILES["filename"]["type"]);
Проверки в пикселях не предусмотрено наверно для временного. | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 21:00)
| | Учебник — это хорошо, но ни один учебник не заменит практики. Экспериментируйте, не бойтесь.
Вот и сейчас: что значит «нет в учебнике проверки на пиксели»? У вас есть временный файл, есть функция, которая возвращает размеры любого изображения. Так примените одно к другому и посмотрите, что получится. | |
|
|
|
|
|
|
|
для: Киналь
(01.11.2010 в 21:31)
| | Спасибо. Вдохновили. Щас попробую. :))))) | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 21:39)
| | с богом... | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 20:55)
| | Я внимательно прочел, потому и написал, что if ($_FILES["image"]["size"] > 300*1024) никак вам не вернет желаемого. Нет ключа у массива $_FILES передающего размеры изображения. Самое смешное, что вы приняв изображение, тем не менее говорите, что оно еще не загружено. Чтобы действительно узнать размеры до загрузки, нужно их узнать у клиента, и передать на сервер:
<script>
function imgVal(s) {
var ims = new Image();
ims.src = s;
ims.onload = function() {
var val = ims.width + ";" + ims.height; //вот это передать на сервер
}
}
</script>
<input type="file" name="image" onchange="imgVal(this.value)">
| А далее уж что хотите, предупреждайте, ругайте.... но это никак не остановит пользователя от передачи формы вам. | |
|
|
|
|
|
|
|
для: sim5
(02.11.2010 в 04:06)
| | А есть какие-либо настройки сервера apache или php, где можно указать max количество байт в передаче данных на сервер? | |
|
|
|
|
|
|
|
для: captain-america
(02.11.2010 в 10:03)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.11.2010 в 10:11)
| | Вы не поняли, скажем я указываю в настройках загрузить не более 50 Кб, и скажем когда файл будет грузиться на сервер во временное хранилище, то закачка обрубилась бы на 50 кб..
Просто услвоия некоторых хостеров по траффику, чтобы исходящий был в 4 раза больше входящего, и мне бы хотелось, чтобы входящий был минимален. | |
|
|
|
|
|
|
|
для: captain-america
(02.11.2010 в 10:32)
| | Это в php.ini максимальный размер загружаемого файла указывается, в мегабайтах. | |
|
|
|
|
|
|
|
для: sim5
(02.11.2010 в 10:41)
| | То есть, я могу там указать 0.5 и скажем мне на сервер от клиента передастся не больше 05. мегабайт? | |
|
|
|
|
|
|
|
для: captain-america
(02.11.2010 в 10:59)
| | Не знаю, десятичные значения я не пробовал указывать, пробуйте сами. А по умолчанию указаны единицы мегабайты:
upload_max_filesize = 2M
так что можете попробовать указать килобайты, байты. | |
|
|
|
|
|
|
|
для: captain-america
(02.11.2010 в 10:59)
| | вы не captain-america, вы captain-evidence
без обид :)
upload_max_filesize integer
http://www.php.ru/manual/ini.core.html
а, хотя можно, просто вместо M на конце пишите K (килобайты), например upload_max_filesize = 500K | |
|
|
|
|
|
|
|
для: psychomc
(02.11.2010 в 11:08)
| | Суть была не в цифрах, а в процессе)
Вырезка из ссылки
>Устанавливает максимальный допустимый размер POST-данных
Так мне надо знать как он их определяет? Вопрос связан с входящим траффиком, Скажаем я загружаю 2 мб, а лимит загрузки стоит 1МБ.
И вот мой главный вопрос)) Какой у меня будет входящий траффик? 2МБ(то есть php скажет постфактум, я загрузил, но чета много) или 1МБ( в процессе загрузке php скажет, брателло ты превысил лимит, забирай пост данные обратно?))) | |
|
|
|
|
|
|
|
для: captain-america
(02.11.2010 в 11:18)
| | Файл просто загрузиться не до конца и вы получите ошибку. Попробуйте загрузить, и все вопросы отпадут. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2010 в 19:56)
| | я не нашла в учебнике о проверке временного файла перед записью на высоту. | |
|
|
|
|
|
|
|
для: sim5
(01.11.2010 в 19:56)
| | как это записать.? | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 20:17)
| | прочтите в руководстве пользователя о функции getimagesize(); и поймёте, как проверить высоту, ширину файла. | |
|
|
|
|
|
|
|
для: tavila2009
(01.11.2010 в 19:46)
| |
<?php
list($width, $height) = getimagesize($_FILES["image"]["tmp_name"]);
if ($height > 500) exit("Высота изображения больше 500 пикселей");
?>
|
| |
|
|
|