Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

43_HTML_FormPersister: новый взгляд на построение форм (Дмитрий Котеров, оценка: 3)
Goto page Previous  1, 2, 3, 4, 5  Next
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jun 29, 2005 12:44 pm (написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

JC_Piligrim wrote:
Но FormPersister просто вырезает все после '?' включительно
Неправда Ваша, см. код полностью:
Code (php): скопировать код в буфер обмена
function tag_form($attr)
{
        if (isSet (www.php.net/isset)($attr['action'])) return;
        $attr['action'] = preg_replace (www.php.net/preg_replace)('/\?.*/s', '', $_SERVER['REQUEST_URI']);
        return $attr;
}
Т.е. если action задан явно, он таким и остается, какой был.

У Вас где-то еще ошибка, ищите.
Back to top
View user's profile Send private message Send e-mail
JC_Piligrim
Заглянувший



Joined: 19 Feb 2005
Posts: 8
Карма: 2
   поощрить/наказать

Location: Краснодарский край

PostPosted: Wed Jun 29, 2005 1:34 pm (спустя 50 минут; написано за 2 минуты 10 секунд)
   Post subject:
Reply with quote

И правда, моя неправда. Простите, что поспешил сюда писать, не разобравшись до конца. Хотя, я, собственно, до сих пор не понял, что случилось. Уходил на обед - action вырезался. Пришел с обеда - все работает нормально. До сих пор не могу понять, почему, но факт... Чудеса какие-то... =)
Back to top
View user's profile Send private message Send e-mail
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Jul 13, 2005 3:53 pm (спустя 14 дней 2 часа 18 минут; написано за 1 минуту 33 секунды)
   Post subject:
Reply with quote

Здравствуйте Дмитрий.

У меня вопрос -- на каких условиях можно использовать ваши скрипты FormPersistent и SemiParser в своих проектах? Вопрос о лицензии нигде не затронут -- ни в скриптах, ни в статье, ни в этой ветке...
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jul 14, 2005 5:16 pm (спустя 1 день 1 час 23 минуты)
   Post subject:
Reply with quote

Лицензия LGPL или PHP License (еще не решил).

Мое упущение, в новой версии добавлю. Кстати, вопрос: как это правильнее всего сделать? Вкладывать текст лицензии прямо в код не хотелось бы. Достаточно ли просто в заголовке написать, что это LGPL, и привести ссылку на официальный текст?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jul 14, 2005 5:46 pm (спустя 29 минут)
   Post subject:
Reply with quote

www.infolex.narod.ru/gpl_gnu/lgplrus.html
Back to top
View user's profile Send private message Send e-mail
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Jul 14, 2005 9:50 pm (спустя 4 часа 4 минуты; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

Полностью приводить текст лецензии не надо. Да и заняло бы это слишком много места. В принципе, как это делать описано здесь www.gnu.org/copyleft/lesser.html#SEC4. Сайт с русским переводом сильно тормозит, так что привожу ссылку на оригинал. Указаный кусок следует поставить в начало обоих файлов в комментарии.

Вот, например, как это сделано в Smarty (LGPL):

/**
 * Project: Smarty: the PHP compiling template engine
 * File: Smarty.class.php
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 * For questions, help, comments, discussion, etc., please join the
 * Smarty mailing list. Send a blank e-mail to
 * smarty-general-subscribe@lists.php.net
 *
 * @link smarty.php.net/
 * @copyright 2001-2005 New Digital Group, Inc.
 * @author Monte Ohrt <monte at ohrt dot com>
 * @author Andrei Zmievski <andrei@php.net>
 * @package Smarty
 * @version 2.6.9
 */
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jul 14, 2005 10:13 pm (спустя 23 минуты; написано за 39 секунд)
   Post subject:
Reply with quote

The One wrote:
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Вот этого-то как раз у меня и нет - текстовик с лицензией я к модулю не прикладываю. Так что я данный абзац убрал.
Back to top
View user's profile Send private message Send e-mail
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 12:30 am (спустя 2 часа 16 минут; написано за 44 секунды)
   Post subject:
Reply with quote

По идее, можно и линком на www.gnu.org/copyleft/lesser.html обойтись. Идея в том, чтобы дать пользователю прочитать лицензию.
Back to top
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 12:32 am (спустя 2 минуты; написано за 53 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
текстовик с лицензией я к модулю не прикладываю.
Кстати, почему бы и не приложить? Проблем меньше и пользователю и автору.
Я так понял, что Вы всё таки остановились на LGPL?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 10:14 am (спустя 9 часов 42 минуты; написано за 31 секунду)
   Post subject:
Reply with quote

Остановился на LGPL.
Чтобы "приложить", нужно делать zip-архив, а я пока не готов к столь серьезному шагу. Слишком трудоемко.
Back to top
View user's profile Send private message Send e-mail
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 10:46 am (спустя 32 минуты; написано за 5 минут 58 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
нужно делать zip-архив
У меня ещё вопрос. Проблему я для себя решил, но всё же.

Сырцы можно "скачать" с этого dklab.ru/chicken/nablas/demo/HTML_FormPersister/lib/HTML/ адреса. Я правильно понял? Так вот, при скачивании или открытии любого из файлов я получаю красивый такой раскрашенный код. В HTML, со SPAN'ами, &nbsp'ами и другими HTML вещами. PHP понятное дело такое кушать не захочет. Я даже прововать не стал. Вариант сохранить не как HTML, а как text -- тогда браузеры (мозилла и ослик, во всяком случае) бьют длинные строки. Особенно это неприятно, когда происходит посередине PHP'шной строки -- и ошибки нет и работает неверно. Единственный вариант, не требующей дальнейшеё доводки, это выделить всё и скопировать через буфер обмена. :\ Мне кажется, что так не должно быть...

Так что вариант с zip (или не zip) архивом был бы очень кстати.
Back to top
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 10:48 am (спустя 2 минуты; написано за 28 секунд)
   Post subject:
Reply with quote

"не требующей дальнейшеё доводки" = "не требующий дальнейшей доводки"
:")
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Jul 15, 2005 3:17 pm (спустя 4 часа 28 минут; написано за 1 минуту 51 секунду)
   Post subject:
Reply with quote

The One wrote:
Сырцы можно "скачать" с этого dklab.ru/chicken/nablas/demo/HTML_FormPersister/lib/HTML/ адреса. Я правильно понял?
Да, совершенно верно. Это официальная версия и гарантированно самая свежая версия (я использую жесткие ссылки NTFS, так что у меня в двух десятках проектов задействован, по сути, один и тот же файл).
The One wrote:
выделить всё и скопировать через буфер обмена
Так и надо делать. Это единственно верный способ.

Еще раз: связываться с архивами я не хочу, потому что это сильно усложняет процесс выкладки новых версий (так я их просто по rsync копирую, вместе с полным dklab). Вряд ли в ближайшие пару лет будут архивы.
Back to top
View user's profile Send private message Send e-mail
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Jul 16, 2005 1:27 am (спустя 10 часов 10 минут; написано за 10 минут 16 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Так и надо делать. Это единственно верный способ.
Ясно, тогда такое предложение. В PHP закрывающий тэг ?> если он находится в конце файла можно не указывать. На самом деле, я бы посоветовал всегда его опускать в таких случаях. Дело в том, что если файл включить в самом начале своего скрипта, как это обычно и делается:
Code (php): скопировать код в буфер обмена
<?php

require_once 'FormPersister.php'; // <--- файл, полученный копированием через буффер
 
а потом сделать что-то вроде
Code (php): скопировать код в буфер обмена
header (www.php.net/header)( 'Location: /index.php' );
то на выходе получаем ругань php о том, что headers already sent.

Это происходит из-за того, что в конце файла при копировании через буффер, после ?> добавяется один пробел. И этот пробел воспринимается интерпретатором как повод к действию и он вываливает браузеру заголовки и этот пробел. Также пробел будет мешать при генерации, скажем, изображений. Если закрывающий тэг опустить, то концом скрипта будет считаться конец файла и никаих лишних символов в конце не появится.

Я понимаю, что эти соображения не слишком касаются конкретно FormPersister, т.к. используется output buffering -- нет проблемы с header. И для генерации изображений библиотека вряд ли подходит :) Но тем не менее, файл может быть включён даже если FormPersister использоваться не будет. Соответственно output buffering не будет обязательно включён.

Тоже самое касается и SemiParser.php. Кстати, дополнительный пробел добавляется к каждой строке... А нельзя сделать так, чтобы сервер не пропускал эти файлы через highlight?
Back to top
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Jul 16, 2005 1:32 am (спустя 4 минуты; написано за 38 секунд)
   Post subject:
Reply with quote

Только сейчас заметил описание этой проблемы в комментарии... Но мне всё же кажется, что убрать закрывающий тэг будет лучше.
Back to top
The One
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Jul 16, 2005 1:24 pm (спустя 11 часов 51 минуту; написано за 4 минуты 38 секунд)
   Post subject:
Reply with quote

Ещё предложение по улучшению. Добавить функцию для начала буферизации вывода с соответствующими хэндлерами. Соответствующая строке весьма неудобоварима и труднозапоминаема. Горазно удобнее заменить её на вызов функции. Например вот так:
Code (php): скопировать код в буфер обмена
* @package HTML
*/
require_once root . '/lib/formpersister/SemiParser.php';

function formpersister_start()
{
        ob_start (www.php.net/ob_start)( array (www.php.net/array)( 'HTML_FormPersister', 'ob_formpersisterhandler' ) );
}

class HTML_FormPersister extends HTML_SemiParser
{
В принципе, её можно сделать статическим методом класса HTML_FormPersister -- это уже выбирать Вам как автору.

Кстати, в привёденном куске кода также включается библиотека SemiParser. Путь к ней прописан жёстко и его приходится постоянно менять.
Back to top
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Jul 17, 2005 9:30 pm (спустя 1 день 8 часов 6 минут; написано за 2 минуты 8 секунд)
   Post subject:
Reply with quote

Не то чтобы глюк, вроде как даже всё логично, но тем не менее

если я в подписи к кнопке хочу использовать &nbsp;, например, чтобы сделать размер кнопки побольше
Code (any language): скопировать код в буфер обмена
<input type="submit" value="&nbsp; go &nbsp;">
то получаю
Code (any language): скопировать код в буфер обмена
<input type="submit" value="&amp;nbsp; go &amp;nbsp;">
что, естественно, даёт уже не тот эфект...
Back to top
View user's profile Send private message
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Jul 17, 2005 9:58 pm (спустя 27 минут; написано за 6 секунд)
   Post subject:
Reply with quote

Quote:
Я понимаю, что эти соображения не слишком касаются конкретно FormPersister, т.к. используется output buffering -- нет проблемы с header. И для генерации изображений библиотека вряд ли подходит :) Но тем не менее, файл может быть включён даже если FormPersister использоваться не будет. Соответственно output buffering не будет обязательно включён.
output buffering не поможет, если в скрипте, в котором ранее в output вкрался пробел, придётся отдавать бинарный код, скажем, через passthru.

Вообще, конечно же, zip-файл было бы скачать проще и удобней, жаль что пока нет такой возможности.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Jul 18, 2005 1:32 pm (спустя 15 часов 34 минуты; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

The One wrote:
Это происходит из-за того, что в конце файла при копировании через буффер, после ?> добавяется один пробел.
Ну, знаете... Библиотекой все-таки пользуются программисты, которые об этом прекрасно знают.
The One wrote:
А нельзя сделать так, чтобы сервер не пропускал эти файлы через highlight?
Будет некрасиво тогда. Я не понимаю, что сложного вырезать последний пробел из кода?..
The One wrote:
в привёденном куске кода также включается библиотека SemiParser. Путь к ней прописан жёстко и его приходится постоянно менять
В библиотеке нет жестких привязок к путям. Вы просто, по-моему, не используете удобную возможность include_path в PHP - почитайте докцументацию и просветлейте
The One wrote:
formpersister_start()
Такая функция была в ранних версиях, но ее забраковали на PEAR. В принципе, я считаю, справедливо.
Fog wrote:
<input type="submit" value="&amp;nbsp; go &amp;nbsp;">
Да, это известный баг, который не совсем пока понятно, как лечить. В новых версиях что-нибудь придумаю.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Jul 26, 2005 8:22 pm (спустя 8 дней 6 часов 50 минут; написано за 6 минут 2 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Ну, знаете... Библиотекой все-таки пользуются программисты, которые об этом прекрасно знают.
Пока в первый раз на это не наткнёшься, об этом не узнаешь -- пробел довольно таки невидимый символ :))
Дмитрий Котеров wrote:
Будет некрасиво тогда. Я не понимаю, что сложного вырезать последний пробел из кода?..
Ничего сложного, но когда можно этого не делать, то зачем делать? :)
Дмитрий Котеров wrote:
В библиотеке нет жестких привязок к путям
Отнюдь.
Code (php): скопировать код в буфер обмена
require_once 'HTML/SemiParser.php';
Директория 'HTML/' -- это, по моему, уже достаточно жёстко.
Дмитрий Котеров wrote:
Вы просто, по-моему, не используете удобную возможность include_path в PHP
Вы правы -- не использую, но я в курсе что это и с чем его едят. :)
Дмитрий Котеров wrote:
Такая функция была в ранних версиях, но ее забраковали на PEAR. В принципе, я считаю, справедливо.
Ну, глобальную функцию я и сам считаю лишней. Но статический вызов, я думаю, был бы в самый раз.
Дмитрий Котеров wrote:
Fog писал(а):
<input type="submit" value="&amp;nbsp; go &amp;nbsp;">
Да, это известный баг, который не совсем пока понятно, как лечить. В новых версиях что-нибудь придумаю.
Ширину кнопки лучше устанавливать с помощью CSS:
Code (html): скопировать код в буфер обмена
<input (december.com/html/4/element/input.html) type="submit" value="go" style="width: 100px;"> (december.com/html/4/element/.html)
Хотя саму проблему замены символов это не решает.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jul 27, 2005 10:30 am (спустя 14 часов 7 минут; написано за 20 секунд)
   Post subject:
Reply with quote

Гость wrote:
Директория 'HTML/' -- это, по моему, уже достаточно жёстко.
Я все понял. RTFM вам! Стыд и позор.
Читать pear.php.net/manual/en/standards.naming.php до полного просветления.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Jul 30, 2005 7:32 pm (спустя 3 дня 9 часов 2 минуты)
   Post subject:
Reply with quote


М

Перенесено из форума: Наблы :: Куроводство.
Перенесено в форум: Конструктор.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Jul 30, 2005 7:40 pm (спустя 7 минут; написано за 58 секунд)
   Post subject:
Reply with quote

The One wrote:
Так что вариант с zip (или не zip) архивом был бы очень кстати.
Статьи переехали вот сюда: dklab.ru/lib/
Там каждая статья снабжена ссылкой на zip-архив со всеми исходниками.
Архивы генерируются "на лету" специальным скриптом, так что сложностей при обновлении исходников не возникает.
Back to top
View user's profile Send private message Send e-mail
6еpcepk
Заглянувший
Warnings: 2


Joined: 13 Jun 2005
Posts: 14
Карма: -8
   поощрить/наказать


PostPosted: Wed Aug 03, 2005 10:14 am (спустя 3 дня 14 часов 33 минуты; написано за 17 секунд)
   Post subject:
Reply with quote

День добрый,
Пользователь выбирает параметр из списка (который формируется по запросу данных из БД) и нажимает кнопку продолжить.
После чего происходит открытие страницы где есть три списка (значение одного из которых было выбрано выше) и поле ввода.
Как сделать так, чтобы первые два списка были CHECKED (третий таковым и является).
Не через FormPersister думаю так:
Code (php): скопировать код в буфер обмена
// Выбираем данные для списка из таблицы, которая имеет структуру [id] [name]
$result = mysql_qw('
SELECT * FROM table
'
) or die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
// /
?>
<form action="" method="post">
<select name="Name">             
<option value="">-- Chooose --</option>
<?
while ($data = mysql_fetch_array (www.php.net/mysql_fetch_array)($result, MYSQL_ASSOC)) {
  if ($data['id'] == $value) {
?>
<option value="<?=$data['id']?>" CHECKED><?=$data['name']?></option> // Если ID равено выбранному значению, то выводим "помеченный" элемент списка
<? }
    else {?>
              <option value="<?=$data['id']?>"><?=$data['name']?></option> // Иначе выводим "не помеченный" элемент списка
                  <?}
} ?>
</option>
</select>   
<input type="submit" name="doEdit" value="Edit">
</form>
Если такая проблема уже обсуждалась дайте ссылку, ключевые слова, которые я использовал для поиска, не дали ожидаемого результата.
Сорри, если не совсем корректно сформулировал (:
Спасибо.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Aug 03, 2005 3:41 pm (спустя 5 часов 27 минут; написано за 16 секунд)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
<select name="Name" default="<?=$value?>">
?
Back to top
View user's profile Send private message Send e-mail
6еpcepk
Заглянувший
Warnings: 2


Joined: 13 Jun 2005
Posts: 14
Карма: -8
   поощрить/наказать


PostPosted: Wed Aug 03, 2005 6:47 pm (спустя 3 часа 6 минут; написано за 8 секунд)
   Post subject:
Reply with quote

Спасибо. То что надо!
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Aug 07, 2005 7:50 pm (спустя 4 дня 1 час 2 минуты; написано за 2 минуты 23 секунды)
   Post subject:
Reply with quote

"Хьюстон, у нас проблемы" =)

вставляю вот такую строку
Quote:
<script></script>
на страницу, которая обрабатывается парсером форм, и после отправки данных получаю на этом месте
Quote:
<script>42f638ad83c451
Работа скрипта на этом заканчивается, всё что идёт по коду дальше - не отображается.

Между тегами скрипт может быть код, это на результат не влияет.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Aug 08, 2005 9:43 am (спустя 13 часов 53 минуты; написано за 39 секунд)
   Post subject:
Reply with quote

Я думаю, у Вас слишком старая версия (какая, кстати?).
Вот тут: dklab.ru/lib/HTML_FormPersister/demo/test/HTML_FormPersister/t_simple_fp.php
проблем не наблюдается, как видите.

Давайте код для воспроизведения ошибки (Как правильно задавать вопросы: статья, обязательная к прочтению (citforum.ru/howto/smart-questions-ru.shtml)).
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Mon Aug 08, 2005 1:31 pm (спустя 3 часа 47 минут; написано за 4 минуты 58 секунд)
   Post subject:
Reply with quote

Версия самая последляя, специально чтобы проверить, скачал в zip'е из нового раздела.

Код не приводил, потому что, собственно, нечего приводить, просто вставляем указанный код в страницу - получаем ошибку.

Статью, конечно же, читал. Хотя, конечно же версию PHP следовало указать, прошу прощения. Проверял на 4.2.0, на пятёрке, кажется, всё в порядке.

Файл примера /HTML_FormPersister/t_simple_fp.php с внесённым изменением:
Code (php): скопировать код в буфер обмена
<?php

 error_reporting (www.php.net/error_reporting)(E_ALL);

//include_once "../../lib/config.php";

include_once "/usr..   ../lib/HTML/FormPersister.php";

ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formPersisterHandler'));
?>
<form method="get">
        <input type="text" name="test[text][first]">
        <input type="radio" name="test[radio]" value="first">first
        <input type="radio" name="test[radio]" value="second">second
        <input type="submit" value="Submit">
        <script></script>
</form>
<xmp><?print_r (www.php.net/print_r)($_GET)?></xmp>
<hr><?show_source (www.php.net/show_source)(__FILE__)?>
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Aug 08, 2005 2:51 pm (спустя 1 час 19 минут; написано за 20 секунд)
   Post subject:
Reply with quote

У меня этот код работает. PHP 4.3.11. Попробуйте обновить, 4.2 - уж очень старая версия.
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Mon Aug 08, 2005 4:29 pm (спустя 1 час 38 минут; написано за 1 минуту 49 секунд)
   Post subject:
Reply with quote

Так ведь не от меня зависит, хостинг такой.
Тем более, если уж позиционируете скрипт как
Quote:
Особенно удобно его применять при модификации уже написанных скриптов
То это особенно актуально, так как старые скрипты порой стоят на старых серверах, админы которых не хотят иметь головную боль, которая может возникнуть от проблем с большим количеством старых скриптов, которые могут не пережить переезд на новую версию PHP.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Aug 09, 2005 2:50 pm (спустя 22 часа 21 минуту; написано за 21 секунду)
   Post subject:
Reply with quote

Ну вы хоть проверить-то можете, точно дело в версии PHP или в чем-то еще?
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 10, 2005 1:03 pm (спустя 22 часа 12 минут; написано за 1 минуту 13 секунд)
   Post subject:
Reply with quote

Один и тот же код работает на пятёрке, но не работает на 4.2.0. Постараюсь сегодня/завтра поковыряться в исходнике, может найду чего...
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Aug 11, 2005 10:56 am (спустя 21 час 53 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

ОК, дистрибутив есть:
www.filesearch.ru/cgi-bin/s?q=php-4.2.0-Win32.zip+&t=f&w=a&x=8&y=15
Попробую проверить. Но только вот сдается мне, что это ошибка в preg_split в ранних версиях PHP (или что-то вроде этого).
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Aug 11, 2005 2:04 pm (спустя 3 часа 7 минут; написано за 6 минут)
   Post subject:
Reply with quote

Поправил баг с разрывом по тэгу <script> в PHP 4.2.0. Проблема была, действительно, из-за ошибки в preg_split(): она возвращала неправильный результат, если в строке присутствует символ с нулевым кодом chr(0). В новых версиях PHP это исправлено, в старых - нет.

Изменилась только библиотека HTML_SemiParser (новая версия 1.93). Теперь она работает немного быстрее в случае, если тэги обработчиками не изменялись (она их только парсит, но не собирает обратно из кусков, в выдает оригинальные строковые представления). В результате теперь снова работает конструкция

<input type="submit" value="&nbsp;aaa&nbsp;"> (то же и для других тэгов, в атрибутах которых встречаются entities)

- в случае, если обработчики не изменяют submit-кнопку, &nbsp; не превращается в &amp;nbsp;, как было раньше. Это же касается и всех остальных entities в атрибутах, генериирующих unicode-символ вне диапазона текущей однобайтовой кодировки. В частности, должный уйти баги на форуме, когда было невозможно залогиниться с именем, содержащим иероглифы.

Милости просим на тестирование:
dklab.ru/lib/HTML_FormPersister/demo/test/HTML_FormPersister/
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Fri Aug 12, 2005 12:39 pm (спустя 22 часа 34 минуты; написано за 7 секунд)
   Post subject:
Reply with quote

Спасибо! =)
Back to top
View user's profile Send private message
Alexey00
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Aug 15, 2005 10:32 pm (спустя 3 дня 9 часов 52 минуты; написано за 3 минуты 26 секунд)
   Post subject:
Reply with quote

Здравствуйте!

Никак не могу разобраться. При отладке на месте, в Денвере все работает прекрасно и сообщений об ошибках нет. Но как только я выложил скрипты на удаленный сервер полезла
вот такая многокилометровая "простыня" в error.log. Примерно понятно, что происходит. Но как с этим бороться никак не соображу. Подскажите, плз, в какую сторону копать.
Версия HTML_FormPersister последняя.

[Mon Aug 15 22:38:14 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 349
[Mon Aug 15 22:38:14 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Smarty/plugin/block.t_component.php on line 24
[Mon Aug 15 22:38:14 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Smarty/plugin/block.t_component.php on line 29
[Mon Aug 15 22:38:14 2005] [error] PHP Notice: Uninitialized string offset: 0 in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 387
[Mon Aug 15 22:38:14 2005] [error] PHP Notice: Uninitialized string offset: 0 in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 387
[Mon Aug 15 22:38:14 2005] [error] PHP Notice: Uninitialized string offset: 0 in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 387
[Mon Aug 15 22:38:14 2005] [error] PHP Notice: Uninitialized string offset: 0 in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 387
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of call_user_func(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Main.php on line 313
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of call_user_func(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Main.php on line 325
[Mon Aug 15 22:38:29 2005] [error] PHP Notice: Undefined index: argc in /www/vhosts/mysite.com/html/WEBINF/lib/Apache/Rewriter.php on line 89
[Mon Aug 15 22:38:29 2005] [error] PHP Notice: Undefined index: argv in /www/vhosts/mysite.com/html/WEBINF/lib/Apache/Rewriter.php on line 89
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of call_user_func(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 286
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 346
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/HTML/SemiParser.php on line 349
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Smarty/plugin/block.t_component.php on line 24
[Mon Aug 15 22:38:29 2005] [error] PHP Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /www/vhosts/mysite.com/html/WEBINF/lib/Subsys/Templier/Smarty/plugin/block.t_component.php on line 29
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Aug 16, 2005 12:41 am (спустя 2 часа 9 минут; написано за 1 минуту 28 секунд)
   Post subject:
Reply with quote

Alexey00 wrote:
Версия HTML_FormPersister последняя
Что-то мне это сильно сомнительно - по крайней мере, в последней версии на указанных в логах строках ничего подозрительного нет.
И при чем тут книжный шаблонизатор, кстати? Не надо мусора, приведите только сообщения об ошибках в последней версии FormPersister-а.
И еще одно: "Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file". Используйте translate.ru для перевода сообщения с английского.
Back to top
View user's profile Send private message Send e-mail
Alexey00
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Aug 16, 2005 10:27 am (спустя 9 часов 46 минут; написано за 3 минуты 34 секунды)
   Post subject:
Reply with quote

Прошу извинить за мусор.

Неправда была моя.
После установки
* HTML_FormPersister: in-place "human-expectable" form tags post-processing.
..........
* version 2.1 of the License, or (at your option) any later version.

 * HTML_SemiParser: selective fast-and-dirty tags processing via callbacks.
...........
 * version 2.1 of the License, or (at your option) any later version.

сообщений об ошибках HTML_FormPersister'а нет.

У хостера - PHP Version 4.3.2
allow_call_time_pass_reference Off Off

Сообщения об отключении передачи переменных по ссылке в файлах шаблонизатора
WEBINF/lib/Subsys/Templier/Main.php on line 325, on line 313
и
WEBINF/lib/Subsys/Templier/Smarty/plugin/block.t_component.php on line 25, on line 30
идут
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Aug 16, 2005 11:05 am (спустя 37 минут; написано за 45 секунд)
   Post subject:
Reply with quote

Alexey00 wrote:
version 2.1 of the License
Это не версия библиотеки, а версия лицензии LGPL. Она не менялась вот уже лет 5 как. Версия библиотеки ниже.
Alexey00 wrote:
У хостера - PHP Version 4.3.2
allow_call_time_pass_reference Off Off
Во-первых, почему такой старый?
А во-вторых, никто php.net/ini_set еще не отменял.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3, 4, 5  Next
Page 2 of 5    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML