24.04.2016, 17:13
|
Аспирант
|
|
Регистрация: 15.04.2016
Сообщений: 53
|
|
Вставка нескольких изображений и возврат назад по кнопке браузера
Нажимаю "Добавить еще изображение", выбираю файл - и так три раза подряд. Потом нажимаю кнопку "Загрузить". Все нармально.
Теперь пытаюсь вернуться назад, нажимаю кнопку браузера назад. И вот проблема, надо повторно опять добавлять изображения. Т.е. вернуться назад по кнопе браузера не получается.
Как решить это? Подскажите пожалуйста (код ниже).
Это глюк браузера (opera) или не совсем правильный код?
<?php
//
// JavaScript.
//
echo '<script>
function insert()
{
var newspan = document.createElement("span");
str = \'<table width="100%" style="margin-top: 2px; margin-bottom: 2px;" align="left" cellspacing="0" cellpadding="0" border="0">\';
str += \'<tr>\';
str += \'<td>\';
str += \'<input type="file" size="70" name="download_image[]">\';
str += \'</td>\';
str += \'</tr>\';
str += \'</table>\';
newspan.innerHTML = str;
list.appendChild(newspan);
}
</script>';
// Форма.
echo '<form method="post" enctype="multipart/form-data" name="file_edit_form" action="http://127.0.0.1/index.php?action=qwerty">';
echo '<div id="list">';
// Вставить сюда.
echo '</div>';
echo '<a onclick="insert();">';
echo 'Добавить еще изображение';
echo '</a>';
echo '<br>';
echo '<input type="submit" value="Загрузить" name="submit_form" />';
echo '</form>';
?>
Последний раз редактировалось St., 24.04.2016 в 17:22.
|
|
25.04.2016, 06:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от St.
|
И вот проблема, надо повторно опять добавлять изображения.
|
Это не беда, а правильное поведение браузера.
|
|
25.04.2016, 11:48
|
Аспирант
|
|
Регистрация: 15.04.2016
Сообщений: 53
|
|
Сообщение от laimas
|
Это не беда, а правильное поведение браузера.
|
Как не беда?
Когда вставляешь 10-ть изображений 640x480, а одно изображение не 640х480 - а больше. Выводится сообщение о ошибке и кнопка вернуться назад:
echo '<a href="javascript:history.back()">Назад</a>';
Возврат назад происходит, но изображения приходиться вставлять заново. Для пользователя это не очень удобно.
Эти кусочки кода из моего пректа.
Посоветуйте, как, что (хочу, чтобы пользователю было удобно)...
Если кому интересно.
Код с ограничением по количеству вставляемых изображений, здесь (как делал я): http://forum.php.su/topic.php?forum=60&topic=6879
Последний раз редактировалось St., 25.04.2016 в 12:03.
|
|
25.04.2016, 12:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А вот так. Поле file поле особое, это в textarea браузер может подставить ранее введенный текст, а в поле file нет, у него свойство value между прочим и то только для чтения.
Сбрасывайте то поле (если их несколько), в которое выбрано не удовлетворяющее условию, или отправляйте Ajax только те, что отвечают условию, если поле multiple, или распределяйте обязанности между клиентом и сервером, серверу ведь все равно проверять это вновь, если ошибки, то те, что ОК запомнить временно, вернуть ошибку, как все ОК, в каталог.
Заставить браузер поступать так как вы хотите - забудьте.
|
|
25.04.2016, 15:05
|
Аспирант
|
|
Регистрация: 15.04.2016
Сообщений: 53
|
|
У меня форма, а там есть кнопка отправить, после нажатия на кнопку выполняется другой файл php (action). А получится сделать так! Нажимаем на кнопку отправить, вызывается js и проверяет $_FILES, если ок, выполняется другой файл php. Иначе показать окно alert.
П.С.
Блин, не складываютcя другие моменты - не подходит такой вариант.
Просто, для интереса, с кнопкой отправить, можно сделать изврат?
Последний раз редактировалось St., 25.04.2016 в 15:12.
|
|
25.04.2016, 16:50
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от St.
|
А получится сделать так! Нажимаем на кнопку отправить, вызывается js и проверяет $_FILES, если ок, выполняется другой файл php. Иначе показать окно alert.
|
Сообщение от St.
|
не подходит такой вариант.
|
Не какой-то там, а $_FILES, и говорите не подходит? А если я отправляю вам кучу вообще хлама, даже не изображения, а всякую хрень якобы картинки? И учтите, что будет подделан и реферер, и куки будут, не будет только одного - вашего JS с проверкой. Что тогда, примете на веру, что ваш JS проверил? Да за ради бога, нужен хлам, собирайте.
Кроме варианта сервер->клиент (а сервер просто обязан проверять, пофигу что там было на клиенте), я еще говорил о двух чисто клиентских решениях, в зависимости от того, что за поле/поля у формы.
Сообщение от St.
|
Просто, для интереса, с кнопкой отправить, можно сделать изврат?
|
Какой "изврат"?
|
|
26.04.2016, 11:09
|
Аспирант
|
|
Регистрация: 15.04.2016
Сообщений: 53
|
|
Блин. Сдаюсь.
Я не знаю возможностей JS, поэтому возникают куча проблем, как можно, а как нельзя. Я наверное откажусь от js, а вставку изображений напишу полностью на PHP, плюс там нет этой проблемы с возвратом назад. Хотел как лучше, а получилось как всегда.
Сделаю так (вставить изображений можно 7, и пепец...):
for ($x=0; $x<7; $x++)
{
echo '<input type="file" size="75" name="download[]" title="' . $txt['text_files_info'] . '">';
}
Если есть другие варианты - напишите их здесь.
Наверное, тема закрывается...
Последний раз редактировалось St., 26.04.2016 в 11:44.
|
|
26.04.2016, 15:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от St.
|
Я наверное откажусь от js, а вставку изображений напишу полностью на PHP, плюс там нет этой проблемы с возвратом назад.
|
Что в вашем понимании "вставка изображений"? Если речь идет о загрузке пользователями изображений на сервер, то каким же образом без клиента ( Я наверное откажусь от js - с js, без него, это уже второй вопрос, он тут может выступать как помощник, а можно и без) это можно сделать?
|
|
26.04.2016, 16:35
|
Аспирант
|
|
Регистрация: 15.04.2016
Сообщений: 53
|
|
Цитата:
|
Если речь идет о загрузке пользователями изображений на сервер
|
Именно так.
Все ожидал, но это
Цитата:
|
Это не беда, а правильное поведение браузера
|
Блин, блин, блин.
П.С.
Попробывал JS+PHP - не получилось (проблема с возвратом назад), вернулся полностью на PHP (не совсем удобно)...
Если есть возможность, предложите свой вариант js+php для загрузки изображений (файлов) на сервер (клиентская часть). Пример бы на js+php...
|
|
26.04.2016, 17:19
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если Пример бы на js+php, то Ajax, я говорил об этом.
|
|
|
|