Author |
Message |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sun Nov 26, 2006 10:58 pm ()
Post subject:
|
|
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sat Dec 16, 2006 3:21 pm (спустя 19 дней 16 часов 23 минуты)
Post subject:
|
|
|
|
Back to top |
|
 |
Гость
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Jan 12, 2007 12:59 am (спустя 26 дней 9 часов 37 минут; написано за 13 секунд)
Post subject: Дает ли библиотека возможность отметить какие поля формы были заполненны с обшикой ?
|
|
Дает ли библиотека возможность отметить какие поля формы были заполнены с обшикай?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Fri Jan 12, 2007 9:41 am (спустя 8 часов 42 минуты; написано за 42 секунды)
Post subject:
|
|
Нет, это не ее задача. Но то, что Вы хотите, умеет dklab.ru/lib/HTML_MetaForm/ (и он может работать в паре с FormPersister-ом).
|
|
Back to top |
|
 |
Роман К. Беликин
Guest
Карма: 388 поощрить/наказать
|
Posted: Thu Jan 25, 2007 10:13 am (спустя 13 дней 31 минуту; написано за 6 минут 52 секунды)
Post subject:
|
|
Вот такой код: Code (php): | скопировать код в буфер обмена | $_GET['vtt']='off'; //на самом деле тут выбирается значение из базы (1/0) и преобразуется в "on"/"off" ?><input type="checkbox" name="vtt"><? | корректно отрабатывал в версии HTMLPersister-а 1.99, флаг был не отмечен В версии 1.108 (последняя?) флаг всегда включен в не зависимости от содержимого $_GET. Методом научного тыка решил пока-что проблему так: в файле FormPersister.php заменил строчку 361: return (bool)@strval($value) === (bool)$attrValue; на ее старое значение 328: return @strval($value) === $attrValue; (из версии 1.99) Мне такое решение совсем не нравиться, тем более, что я сам не знаю, что делаю :( Это баг, или я неправильно использую библиотеку? Зарание спасибо!
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Jan 25, 2007 11:13 pm (спустя 13 часов 24 секунды; написано за 1 минуту 27 секунд)
Post subject:
|
|
Роман К. Беликин wrote: |
В версии 1.108 (последняя?) флаг всегда включен в не зависимости от содержимого $_GET. | Не может такого быть. Просто $_GET['vtt']='off' - это неправильно. В элементе checkbox может либо прийти value, либо - ничего не прийти. Если атрибут value не задан, то считается, что он равен "on" (именно так работают все браузеры). Используйте $_GET['vtt'] = true или false (0/1).
|
|
Back to top |
|
 |
Роман К. Беликин
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Jan 26, 2007 2:03 am (спустя 2 часа 49 минут; написано за 20 секунд)
Post subject:
|
|
И действительно. Спасибо! :)
|
|
Back to top |
|
 |
Magz
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon May 28, 2007 12:15 pm (спустя 4 месяца 2 дня 10 часов 12 минут; написано за 2 минуты 48 секунд)
Post subject: Заполнение по умолчанию или из POST
|
|
Добрый день. Есть форма, которая ссылается сама на себя. После submit запускается свой обработчик ошибок. Если ошибки найдены, то они выводятся и поля у формы сохраняют свои значения. Это супер. А вот если ошибок не найдено, то и поля у формы должны принять значения по умолчанию. Как пример - добавление объявлений на доску объявлений. Пока есть ошибки в форме добавления "тянем" введенные значения, когда ошибок нет - форма должна быть девственно чистой, ибо добавленно объявление видно на доске, а для ввода следующего нужна "чистая" форма. Как решить эту проблему?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon May 28, 2007 12:23 pm (спустя 8 минут; написано за 1 минуту 8 секунд)
Post subject:
|
|
Способ 1: $_POST = array(); Способ 2: делайте самопереадресацию после приема формы, заодно от повторного POST-а обезопаситесь: dklab.ru/chicken/nablas/17.html
|
|
Back to top |
|
 |
Magz
Guest
Карма: 388 поощрить/наказать
|
Posted: Mon May 28, 2007 1:52 pm (спустя 1 час 28 минут; написано за 1 минуту 36 секунд)
Post subject:
|
|
Дмитрий Котеров wrote: |
Способ 1: $_POST = array(); Способ 2: делайте самопереадресацию после приема формы, заодно от повторного POST-а обезопаситесь: dklab.ru/chicken/nablas/17.html | Дмитрий, спасибо. Очень понравился второй способ, жаль не задумывался об этом раньше!
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Tue May 29, 2007 2:12 am (спустя 12 часов 20 минут; написано за 1 минуту 21 секунду)
Post subject:
|
|
К нему еще есть добавка: записывать в сессию сообщение об успехе (типа "Данные успешно сохранены!"), а после редиректа - доставать их из сессии, показывать на странице сверху, а затем - сессию очищать (естественно, очищать только то, что касается этих сообщений). Тогда вообще замечательно и логично получается.
|
|
Back to top |
|
 |
Дмитрий А.
Заглянувший
Joined: 23 Apr 2007
Posts: 3
Карма: 0 поощрить/наказать
|
Posted: Mon Jun 04, 2007 7:26 pm (спустя 6 дней 17 часов 14 минут; написано за 6 минут 11 секунд)
Post subject: Проблема с большими формами
|
|
Добрый день. Помогите пожалуйста решить одну проблему с большими формами. Есть форма, в которой 2000 полей <input type="text"> (таблица 25*80). Когда генерируемая страница превышает ~250 кб вывод прекращается — скрипт выводит пустую страницу. Никто не сталкивался с подобной проблемой?
|
|
Back to top |
|
 |
Дмитрий А.
Заглянувший
Joined: 23 Apr 2007
Posts: 3
Карма: 0 поощрить/наказать
|
Posted: Mon Jun 04, 2007 7:37 pm (спустя 11 минут; написано за 55 секунд)
Post subject: Проблема с большими формами
|
|
Виноват, проблема была в количестве памяти на процесс. Увеличил до 16 мб — все стало нормально работать. Вопрос закрыт.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Tue Jun 05, 2007 1:16 am (спустя 5 часов 38 минут; написано за 42 секунды)
Post subject:
|
|
Слушайте, ну не скармливайте же столь огромную форму FormPersister-у... Ее и не каждый человек проглотит, а тут - регулярные выражения.
|
|
Back to top |
|
 |
iRabbit
Заглянувший
Joined: 24 Jan 2008
Posts: 3
Карма: 0 поощрить/наказать
Location: Новосибирск
|
Posted: Thu Jan 24, 2008 6:35 pm (спустя 7 месяцев 19 дней 17 часов 19 минут; написано за 11 минут 9 секунд)
Post subject:
|
|
Итак, столкнулся со следующей проблемой... Есть форма: Code (html): | скопировать код в буфер обмена | <form (december.com/html/4/element/form.html) action="путь" method="post"> (december.com/html/4/element/.html) <p> (december.com/html/4/element/p.html) <input (december.com/html/4/element/input.html) type="text" name="menus[name]" value="" /> (december.com/html/4/element/.html) <small> (december.com/html/4/element/small.html)Поле заполнено неверно.</small> </p> <p> (december.com/html/4/element/p.html) <select (december.com/html/4/element/select.html) name="menus[items][]" multiple="multiple" size="3"> (december.com/html/4/element/.html) <option (december.com/html/4/element/option.html) value="index"> (december.com/html/4/element/.html)index</option> <option (december.com/html/4/element/option.html) value="news"> (december.com/html/4/element/.html)news</option> </select>
</p> <p> (december.com/html/4/element/p.html) <input (december.com/html/4/element/input.html) type="submit" value="Отправить" /> (december.com/html/4/element/.html) </p> </form> | Если в поле menus[name] ничего не введено, а в поле select не выбрано ни одного пункта, то я получаю следующий массив: Array ( [menus] => Array ( [name] => ) ) Не знаю почему, но уже понял, что не в моём коде дело: при пустом select'е не хватает элемента в массиве menus: [menus] => Array ( [name] => [items] => ) Я делаю проверку форм с помощью своего валидатора, подстроенного под HTML_FormPersister. Но с полем select возникает проблема... Дело в том, что если написать Code (php): | скопировать код в буфер обмена | if(!isset (www.php.net/isset)($_POST['menus']['items'])) { echo (www.php.net/echo) 'bad'; } else { echo (www.php.net/echo) 'good'; } | , то всё работает. Но я использую для проверки свой класс... Выглядит он примерно так:Класс разбивает параметр menus[items] на $_POST['menus']['items'], но если пункты не выбраны, то функция класса вообще игнорируется. Например, для menus[name] запрос видауспешно обрабатывается, а по отношению к полю select, когда в нём ничего не выбрано - ничего не происходит. Подскажите, пожалуйста, как решить проблемку.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Jan 22, 2009 8:10 pm (спустя 11 месяцев 29 дней 1 час 35 минут; написано за 52 секунды)
Post subject:
|
|
К сожалению, ее никак не решить: по стандарту HTML select-элемент с multiple-выбором, в котором не выбрано ни одного пункта, не посылает вообще никаких данных ни в GET-, ни в POST-запросах. Тут FormPersister ни при чем...
|
|
Back to top |
|
 |
Дмитрий Герасимов
Заглянувший

Joined: 04 Oct 2008
Posts: 13
Карма: 6 поощрить/наказать
Location: Санкт-Петербург
|
Posted: Mon Mar 02, 2009 11:54 am (спустя 1 месяц 10 дней 15 часов 43 минуты; написано за 3 минуты 57 секунд)
Post subject:
|
|
Дмитрий Котеров, помогите разобраться фича это или баг? Code (php): | скопировать код в буфер обмена | <? .... ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formpersisterhandler'));
$_POST['_currencies'] = array (www.php.net/array)(0); ?> <form method="post"> <input type="checkbox" name="_currencies[]" value="RUB" label="RUB" /> <input type="checkbox" name="_currencies[]" value="EUR" label="EUR" /> <input type="checkbox" name="_currencies[]" value="USD" label="USD" /> <input type="submit"> </form> | Отмечаются все чекбоксы _currencies, если элемент с номером 0 массива $_POST['_currencies'] установлен в нуль, вне зависимости от установок других элементов этого же массива.
|
|
Back to top |
|
 |
Дмитрий Герасимов
Заглянувший

Joined: 04 Oct 2008
Posts: 13
Карма: 6 поощрить/наказать
Location: Санкт-Петербург
|
Posted: Mon Mar 02, 2009 12:55 pm (спустя 1 час 1 минуту; написано за 6 минут 12 секунд)
Post subject:
|
|
Да. Это баг, но баг PHP. Ибо Code (php): | скопировать код в буфер обмена | var_dump (www.php.net/var_dump)(in_array (www.php.net/in_array)(0, array (www.php.net/array)('one', 'two'))); // | Это так с пхп версий 5.2.3 и 5.2.5 Другие версии не пробовал и не смотрел. Навскидку, не разбираясь в коде, предлагаю поменять строку 355 в файле FormPersister.phpна такую:Это единственное место в библиотеке (FormPersister.php + SemiParser.php), где используется эта функция (in_array).
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Mon Mar 02, 2009 1:22 pm (спустя 26 минут; написано за 52 секунды)
Post subject:
|
|
Дмитрий Герасимов
Хе-хе, нельзя так делать, отломается в куче других местах тогда, где в $_POST пишут integer-значения. Сделал вот так: // Unfortunately we MUST use strict mode in in_array() // and cast array values to string before checking. // This is because in_array(0, array('one')) === true. return in_array(strval($attrValue), array_map('strval', $value), true); version 1.111
|
|
Back to top |
|
 |
Mr.M.I.T.
Заглянувший
Joined: 11 Apr 2008
Posts: 19
Карма: -1 поощрить/наказать
|
Posted: Sun Mar 29, 2009 3:44 pm (спустя 27 дней 2 часа 21 минуту; написано за 1 минуту 3 секунды)
Post subject:
|
|
Quote: |
FormPersister проводит совершенно определенную политику: "не навреди" | Блин. А там нет никой переключалки по этому поводу? мне бы хотелось чтобы он в одном месте навредил немного полям с уже установленными значениями
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Oct 16, 2009 6:13 pm (спустя 6 месяцев 18 дней 2 часа 29 минут; написано за 4 минуты 57 секунд)
Post subject:
|
|
Здравствуйте.В $row произвольный html. FormPersister удаляет из этого произвольного html кавычки и то, что в этих кавычках находится. Например, атрибуты тегов, которые нельзя заменить на спецсимволы. Внимание вопрос: как выводить произвольный html через атрибут default в textarea? Спасибо.
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Sat Oct 24, 2009 7:49 pm (спустя 8 дней 1 час 36 минут; написано за 52 секунды)
Post subject:
|
|
Не помогает ли вот такое? <textarea default="<?=htmlspecialchars($row)?>"></textarea> Если не помогает, приведите, пожалуйста, минимальный неработающий пример - т.е. точное содержимое $row, с которым оно не работает. Я попробую воспроизвести.
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Tue Oct 27, 2009 11:29 pm (спустя 3 дня 3 часа 40 минут; написано за 1 минуту 12 секунд)
Post subject:
|
|
Доброго времени Использую библиотеку для автозаполнения формы. Code (php): | скопировать код в буфер обмена | ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formPersisterHandler')); $_POST = $data; | но если у меня $data уже прошли через htmlspecialchars ранее, можно ли как то отключить обработку в библиотеке. Сейчас приходится делать Code (php): | скопировать код в буфер обмена | ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formPersisterHandler')); foreach ($data as $k => $v) { $_POST[$k] = html_entity_decode (www.php.net/html_entity_decode)($v, ENT_QUOTES); } | Спасибо
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Wed Oct 28, 2009 3:22 pm (спустя 15 часов 52 минуты; написано за 11 секунд)
Post subject:
|
|
version 1.112: - Bugfix: <input type="checkbox" name="a" value=""> was always checked even if !isset($_POST['a'])
|
|
Back to top |
|
 |
Alex.BiT
Guest
Карма: 388 поощрить/наказать
|
Posted: Sat Dec 12, 2009 11:29 pm (спустя 1 месяц 15 дней 8 часов 6 минут; написано за 6 минут 40 секунд)
Post subject:
|
|
Здравствуйте! Сегодня вот заметил такую особенность: когда извлекаю из базы некоторые строки, и загоняю их в массив $_POST, чтобы они автоматом подставились в форму, библиотека убирает из них нужные слеши: Строка из базы:в input подставится:Это баг или нормальное поведение?
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Fri Dec 31, 2010 12:50 pm (спустя 1 год 18 дней 13 часов 21 минуту; написано за 7 минут 11 секунд)
Post subject:
|
|
Alex.BiT wrote: |
Здравствуйте! Сегодня вот заметил такую особенность: когда извлекаю из базы некоторые строки, и загоняю их в массив $_POST, чтобы они автоматом подставились в форму, библиотека убирает из них нужные слеши: Строка из базы:в input подставится:Это баг или нормальное поведение? | u menia takaja problema toze. kak ejo ispravit?
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Mar 08, 2012 12:50 am (спустя 1 год 2 месяца 7 дней 11 часов 59 минут; написано за 53 секунды)
Post subject:
|
|
А вы проверьте, включен ли у вас режим magic_quotes_gpc (должен быть выключен). Проверьте также, действительно ли у вас после извлечения из базы в строках есть слэши (запишите их в файл и посмотрите, например). Мало ли что.
|
|
Back to top |
|
 |
den_rad
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed May 15, 2013 10:58 pm (спустя 1 год 2 месяца 7 дней 22 часа 8 минут; написано за 50 секунд)
Post subject:
|
|
Обновил PHP до 5.4.14 и у меня в FormPersister перестали обрабатываться поля textarea, кто-нибудь сталкивался с такой проблеммой?
|
|
Back to top |
|
 |
|