ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Вопросы из области php

 

2615
Сергей @Pegass
TheDark, просто вырезай из гета сначала "../" потом "./", а ещё лучше проверяй наличие таких подстрок и если есть сообщай пользователю что он редиска))))

20090
Dimitry @Dimitry
**********
😀

1555
Алексей @TheDark
Как можно на этапе загрузки файла регулировать его размер? Ну т.е. если он больше, чем X, то фтопку его. Просто если попытаться загрузить слишком большой файл стандартными методами, то вернется ошибка:
Warning: POST Content-Length of 133212079 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Файл, как я понял, всегда загружается до выполнения любого php. Как убрать эту ошибку?

20090
Dimitry @Dimitry
Прописать в хтмл лимит

**********

1555
Алексей @TheDark
Dimitry, спасибо, но не помогло. Добавил в начало формы, попробовал загрузить большой файл, ошибка вернулась. Есть еще варианты?

1555
Алексей @TheDark
Я тут подумал, что самое время задать ламерские вопросы.
Буду очень признателен за помощь.

1. Как убрать из строки все особые символы и оставить только буквы/цифры (а-яА-Яa-zA-Z0-9._)? Т.е. не просто через preg_match() увидеть, что строка содержит что-то лишнее, но и сразу убрать все это.
2. Вопрос о датах и времени. Как правильно настроить время на сайте? Все данные в бд хранятся со значением времени TIMESTAMP и записывается через NOW(). Как я понимаю, при получении из базы, время отображается с учётом часового пояса. Так ли это? Например, если комментарий оставит кто-то из Москвы в 13.00 - какое время я увижу в Киеве (нет возможности проверить)? Как решается вопрос с летним временем? Бывает также необходимость сравнивать дату из бд с текущей датой через date(). date() возвращает время сервера или соответствующее временной зоне пользователя?

И, конечно, все еще актуален вопрос о загрузке файлов.

Спасибо!

6600
Александр @admiral
С phpinfo покажи какие значения post_max_size и upload_max_filesize, у тебя наверное post_max_size меньше, может .htaccess ограничен до 8М, а upload_max_filesize больше, отсюда и ошибка
Так же посмотри в чем отличия этих двух параметров, если на примере, то допустим upload_max_filesize ты можешь ограничить допустим до 1Мб, а post_max_size оставить 8Мб, тогда ты сможешь загрузить до 8Мб, но не одним файлом, а допустим 8 файлов по 1Мб

1555
Алексей @TheDark
admiral,
post_max_size - 8M
upload_max_filesize - 2M
в .htaccess я вообще ничего не настраивал в отношении загрузок.

Вопрос, в общем, как скрыть эту ошибку или как с ней справиться? Нужно изменить значения этих параметров? Можно ли это сделать без модификаций php.ini?

Отредактировано TheDark - 19.09.2014
7094
--- @Render
TheDark пишет:

admiral,
post_max_size - 8M
upload_max_filesize - 2M
в .htaccess я вообще ничего не настраивал в отношении загрузок.

Вопрос, в общем, как скрыть эту ошибку или как с ней справиться? Нужно изменить значения этих параметров? Можно ли это сделать без модификаций php.ini?

Обычно через .htaccess легко меняется, если хостер не запретил это:
php_value upload_max_filesize 128M
php_value post_max_size 128M

6600
Александр @admiral
Что за хостинг у тебя с такими настройками? Оптимально эти два параметра выставлять одинаковыми, на webhost1 например они оба на 300Мб выставлены по умолчанию, до загрузки файлов на сервер эти параметры не получиться проверять, так как они проверяются уже на самом сервере, для ie может и можно что то придумать с activex, ну или как вариант использовать флеш аплоадер с доступом к размеру файлов на клиенте, а по поводу скрытия или вывода ошибки в человекопонятном виде добавь get параметр в форму - **********

1555
Алексей @TheDark
admiral, справедливости ради нужно сказать, что я на локале пробую. Но, например, если на хостинге выставлен другой лимит, те же 300Мб, а юзер попытается загрузить что-то большее ему ведь все также вернется эта ошибка. Как ее убрать я что-то не понял. Ну добавил я get параметр, все равно вылазит ошибка и скрипт перестает выполняться. Не очень понял связь get и ошибки.

6600
Александр @admiral
Скрипт напиши сюда, если лимит больше, то естественно при загрузке файла большего размера будут те же ошибки, связь get параметра в посте по ссылке описана, почитай внимательней, он как раз и нужен для того что бы вывести понятную пользователю ошибку, файл конечно придется закачивать занова меньшего размера, но так он хоть будет видеть что размер файла больше допустимого, для того что бы проверять размер файла до загрузки на сервер нужен доступ к файловой системе, что бы определить размер, а это можно сделать например на flash

20090
Dimitry @Dimitry
MAX_FILE_SIZE должно работать

кроме этого смотри первый ответ
**********

Можно скрыть все Warnings

Совет, увеличь до 300мб чтоб грузило и забей.

1555
Алексей @TheDark
admiral, Да примитивная там функция, ничего особенного.
А насчет get я, наверное, просто не так понял, что оно должно было делать. Судя по всему, оно ошибку не скроет, а просто можно добавить свое, человекопонятное сообщение. Верно?

Dimitry, ну хз, MAX_FILE_SIZE не помог, а от js вообще никакого эффекта. Видимо, так и сделаю - увеличу лимит.

Тогда вопрос: нужно лезть в php.ini или достаточно в .htaccess, как написал Render?

p.s. эти вопросы еще актуальны 🙄

Отредактировано TheDark - 19.09.2014
1555
Алексей @TheDark
Ребят, очень нужна помощь по этим вопросам (:
Вы меня уже неоднократно выручали, думаю и эти вопросы вам по силам)

А еще есть вопрос не по php, но тему создавать нет смысла. Друзья, как реализуется подобная верстка: ********** т.е. когда блоки практически хаотично распологаются (речь не о боковой прокрутке)? Пытался гуглить, но видимо я неверно формулирую запрос.

Огромное спасибо!

Отредактировано TheDark - 21.09.2014
6703
Андрей @ZloVeЩиЙ
TheDark, чет ты хреново гуглил...
Первое что крутилось в мыслях - **********

1555
Алексей @TheDark
ZloVeЩиЙ, видимо, кроме массонского (masonry) плагина вариантов то и нет толковых... Попробую, спасибо.

7094
--- @Render
TheDark,
1.
$string = preg_replace("/[^a-zа-яё0-9_.]+/isu", "", $string);

2. Возможно правильней записывать в бд дефолтный часовой пояс UTC-0 или Europe\Moscow, а для клиента уже, в зависимости от его часового пояса убавлять от дефолтного времени или прибавлять.

1555
Алексей @TheDark
Render, с первым - все ок, спасибо)
На хабре дается следующее определение TIMESTAMP:
Хранит 4-байтное целое число, равное количеству секунд, прошедших с полуночи 1 января 1970 года по усреднённому времени Гринвича (т.е. нулевой часовой пояс, точка отсчёта часовых поясов). При получении из базы отображается с учётом часового пояса.

Вроде как все должно быть норм. Но у меня нет возможности это проверить. Решил, что возможно у кого-то есть опыт в этом вопросе.

2615
Сергей @Pegass
"При получении из базы отображается с учётом часового пояса." имеется ввиду часовой пояс сервера, т.е. если у тебя на сервере время московское, то к TIMESTAMP добавится 4 часа и совершенно не важно откуда пришёл пользователь.

Что касается опыта - ну его в опу этот TIMESTAMP запаришься конвертить туда сюда если тебе надо это время в JS потом обрабатывать