И дальше для меня возникают непонятки.
Если дать пользователю засабмитить этот файл, то проверять, является ли он подходящей картинкой прийдется только на сервере, а значит сообщение об ошибке сможет быть выдано лишь постфактум и регистрацию надо будет повторить с начала. Возможно, что это и есть лучший вариант решения.
Но я думаю, нельзя ли это как-то реализовать в стиле аякса - загрузка картинки без перезагрузки страницы? Даже если не говорить о технических сложностях (для меня это пока сложно), то тут есть такой подвох: что если пользователь загрузит одну картинку, потом передумает и загрузит другую картинку, третью, четвертую и т. д. и т. п. Тем самым он завалит каталог uploads своими картинками, что в итоге может привести к исчерпанию места на хостинге. Трудно представить, кто может заниматься таким идиотизмом, но если научить этому действию какой-нибудь бот, то желающие найдутся, я уверен.
Как все-таки лучше реализовать эту задачу?
Спустя 18 минут, 59 секунд (29.09.2008 - 22:27) Ghost написал(а):
ну перезагруза не произойдёт, если название картинки жёстко задать. типа av148.расширение..
другое дело что аяксом этого делать не стоит - вопервых канал в инет юзеру перегрузите, трафик опять таки и т.д.
имхо достаточно будет один раз проверить на сервере, и если это не картинка - попросить ввести корректные данные
другое дело что аяксом этого делать не стоит - вопервых канал в инет юзеру перегрузите, трафик опять таки и т.д.
имхо достаточно будет один раз проверить на сервере, и если это не картинка - попросить ввести корректные данные
Спустя 9 часов, 48 минут, 23 секунды (30.09.2008 - 08:15) sergeiss написал(а):
Цитата(bvn @ 29.9.2008, 23:08) [snapback]49635[/snapback]
...и регистрацию надо будет повторить с начала...
А зачем "с начала"? Кто мешает тебе вывести в нужные поля все данные, которые были заданы корректно, и запросить повторно ввести только некорректные данные? Я надеюсь, что у тебя регистрация на одной странице, а не на двух?
Тогда юзер задает только то, что им же было задано некорректно.
Спустя 1 час, 6 минут, 20 секунд (30.09.2008 - 09:22) bvn написал(а):
что мешает, что мешает... лень мешает
лень мне менять одно большое условие if(правильно введены все обязательные пост-данные) на десяток мелких условий if(правильно введено полеN)
так намного проще разделить код сразу на 2 ветки: одна - все правильно: обрабатываем необязательные данные, другая: что-то не так: идем лесом и вводим данные заново
лень мне менять одно большое условие if(правильно введены все обязательные пост-данные) на десяток мелких условий if(правильно введено полеN)
так намного проще разделить код сразу на 2 ветки: одна - все правильно: обрабатываем необязательные данные, другая: что-то не так: идем лесом и вводим данные заново
Спустя 1 минута, 40 секунд (30.09.2008 - 09:23) bvn написал(а):
PS: А для того, чтобы юзера не напрягать введением повторно данных, у меня javascript-валидатор имеется, т. е.
вариант "идем лесом" срабатывает только тогда, когда есть попытка ввести данные мимо формы.
вариант "идем лесом" срабатывает только тогда, когда есть попытка ввести данные мимо формы.
Спустя 2 минуты, 15 секунд (30.09.2008 - 09:26) bvn написал(а):
PPS: Потому и возник вопрос, что загрузка файла ломает всю логику этого процесса
Потому что я не могу произвести валидацию файла до его загрузки на сервер...
Кстати, использование капчи (которую я еще не делал, но прийдется) тоже поломает эту логику... по-любому
Надо что-то решать
Потому что я не могу произвести валидацию файла до его загрузки на сервер...
Кстати, использование капчи (которую я еще не делал, но прийдется) тоже поломает эту логику... по-любому
Надо что-то решать
Спустя 16 минут, 49 секунд (30.09.2008 - 09:42) Vaska написал(а):
Ты делаешь для пользователя? Или для заказчика? Или для себя? Старайся для пользователя делать, как ему будет лучше. А ему будет лучше если ты сделаешь подробный вывод ошибок при регистрации, да еще заполнишь за него поля, которые он ввел правильно, да еще и поставишь курсор на то место где у него первая ошибка (если их много).
Спустя 2 часа, 22 минуты, 41 секунда (30.09.2008 - 12:05) bvn написал(а):
Я новичек, ты не забывай... Если я буду делать для пользователя, забывая о себе... то я буду по двадцать раз переписывать один и тот же код, каждый раз, находя еще что-то, что я мог бы улучшить для Его Величества Пользователя... а у меня и так уже сроки сдачи горят...
Спустя 52 минуты, 57 секунд (30.09.2008 - 12:58) sergeiss написал(а):
Если ты один раз перепишешь 20 раз, то на другом проекте сделаешь всё сразу правильно. И выиграешь время.
И правильно тебя спросили: для кого ты делаешь- для пользователя или для себя? Если для себя, то о каких сроках ты говоришь? А если для Пользователя (Заказчика), то зачем делаешь плохо?
Опять же... Вовсе не нужно изменять проверку на сайте. Оставь всё, как есть! Только добавь вывод данных (например, имя, телефон, е-мейл и т.д.), которые пользователь уже ввел, прямо в те поля, где оно всё было введено. Речь идет об этом, а не о том, чтобы менять все условия. То есть, ты должен не удалить нечто и внести что-то вместо этого нечто, а добавить надо добавить немного нового кода.
И правильно тебя спросили: для кого ты делаешь- для пользователя или для себя? Если для себя, то о каких сроках ты говоришь? А если для Пользователя (Заказчика), то зачем делаешь плохо?
Опять же... Вовсе не нужно изменять проверку на сайте. Оставь всё, как есть! Только добавь вывод данных (например, имя, телефон, е-мейл и т.д.), которые пользователь уже ввел, прямо в те поля, где оно всё было введено. Речь идет об этом, а не о том, чтобы менять все условия. То есть, ты должен не удалить нечто и внести что-то вместо этого нечто, а добавить надо добавить немного нового кода.
Спустя 42 минуты, 12 секунд (30.09.2008 - 13:40) bvn написал(а):
Цитата(sergeiss @ 30.9.2008, 12:58) [snapback]49706[/snapback]
Если ты один раз перепишешь 20 раз, то на другом проекте сделаешь всё сразу правильно. И выиграешь время.
И правильно тебя спросили: для кого ты делаешь- для пользователя или для себя? Если для себя, то о каких сроках ты говоришь? А если для Пользователя (Заказчика), то зачем делаешь плохо?
И правильно тебя спросили: для кого ты делаешь- для пользователя или для себя? Если для себя, то о каких сроках ты говоришь? А если для Пользователя (Заказчика), то зачем делаешь плохо?
Плохо/хорошо - категории субъективные... Давай не будем играть в идеалистов, есть еще понятие "оптимально", которое учитывает затраты времени и прочие другие факторы... В моем случае оптимально - это используя по максимуму уже готовый код, без переписывания...
Цитата
Опять же... Вовсе не нужно изменять проверку на сайте. Оставь всё, как есть! Только добавь вывод данных (например, имя, телефон, е-мейл и т.д.), которые пользователь уже ввел, прямо в те поля, где оно всё было введено. Речь идет об этом, а не о том, чтобы менять все условия. То есть, ты должен не удалить нечто и внести что-то вместо этого нечто, а добавить надо добавить немного нового кода.
Ну, либо вы не видели мой код, либо я еще плохо представляю, куда и как его вставлять... мне кажется это весьма затруднительным...
Спустя 32 минуты, 49 секунд (30.09.2008 - 14:13) sergeiss написал(а):
Если философствовать , то "оптимально" будет как раз однажды сделать по-нормальному (пусть и с 10-й попытки), а потом делать нормально сразу. Иначе - так и будешь каждый раз с 10-й попытки "угадывать", как надо было правильно. Поверь мне, плз! Что это именно так. Собственно, это процесс и называется "обучением": когда ты делаешь ошибки только сначала, а потому уже знаешь про их возможность, и обходишь их стороной.
Что касается кода, то да, я его не видел (ну, не телепат я пока еще) Но тем не менее, предположу, что данные выводятся на экран примерно так:
<input name="first_name" type="text" id="first_name"/>
Вот в такие строки и надо внедрить то, что юзер уже ввел.
// где-то в начале
$fname=$_POST['first_name'];
...
// и уже там, где надо вводить данные, встраиваем ПХП код в ХТМЛ
<input name="first_name" type="text" id="first_name" <?php echo if( strlen( $fname) > 0 ) "value=\"$fname\""; ?> />
Имеем:
1. При начальном заходе на сайт нету $_POST['first_name'], поэтому $fname - пустая строка, ничего не выводится в поле.
2. После ПОСТа заходим на эту же страницу. Ты проверяешь, что что-то не так, и просишь повторить ввод данных. НО!!! $fname уже будет иметь некую величину (строку), которая и будет выведена. А будет там то, что юзер уже ввел.
3. Обрати внимание, что я сознательно взял имя переменной $fname, а не $first_name. Чтобы в явном виде уйти от проблемы (потенциальной), связанной с наличием (у хостера) возможности использовать глобальные переменные. То есть, заведомо уменьшил вероятность подлома сайта хакерами.
4. Делаешь то же самое со всеми вводимыми величинами... И получаешь довольного Пользователя, удовлетворенного Заказчика, и тебе на надо переделывать код. Ты его только дополняешь (!).
Что касается кода, то да, я его не видел (ну, не телепат я пока еще) Но тем не менее, предположу, что данные выводятся на экран примерно так:
<input name="first_name" type="text" id="first_name"/>
Вот в такие строки и надо внедрить то, что юзер уже ввел.
// где-то в начале
$fname=$_POST['first_name'];
...
// и уже там, где надо вводить данные, встраиваем ПХП код в ХТМЛ
<input name="first_name" type="text" id="first_name" <?php echo if( strlen( $fname) > 0 ) "value=\"$fname\""; ?> />
Имеем:
1. При начальном заходе на сайт нету $_POST['first_name'], поэтому $fname - пустая строка, ничего не выводится в поле.
2. После ПОСТа заходим на эту же страницу. Ты проверяешь, что что-то не так, и просишь повторить ввод данных. НО!!! $fname уже будет иметь некую величину (строку), которая и будет выведена. А будет там то, что юзер уже ввел.
3. Обрати внимание, что я сознательно взял имя переменной $fname, а не $first_name. Чтобы в явном виде уйти от проблемы (потенциальной), связанной с наличием (у хостера) возможности использовать глобальные переменные. То есть, заведомо уменьшил вероятность подлома сайта хакерами.
4. Делаешь то же самое со всеми вводимыми величинами... И получаешь довольного Пользователя, удовлетворенного Заказчика, и тебе на надо переделывать код. Ты его только дополняешь (!).
Спустя 8 минут, 23 секунды (30.09.2008 - 14:21) bvn написал(а):
Ага, спасибо за советы... философствовать у меня тоже нет времени... Если я сорву сроки сдачи проекта и не получу ожидаемых денег в ближайшую неделю, то вероятно, меня отключат от электричества за неуплату и учиться я тога уже буду на счетных палочках... а ты говоришь, оптимально...
тему закрываю.... бесполезной оказалась тема, разве что сам себе помог понять... спасибо
тему закрываю.... бесполезной оказалась тема, разве что сам себе помог понять... спасибо