Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Стартапы, проекты, идеи > Валидатор: не нравится "&" в ссылках


Автор: Staind 29.12.2007, 01:14
Валидатор (http://validator.w3.org/) ругается на знак & в ссылке:
cannot generate system identifier for general entity...

Полазил по Яндексу, нашел, что нужно все знаки & заменить на html сущные &
Проблема вся в том, что у меня, при заходе на сайт, создается сессия и там, понятное дело, в адресной строке идет обычный &. Не подскажите как мне здесь быть?

Автор: Staind 29.12.2007, 01:33
Т.е. вот у меня есть ссылка <a class="menulink" href="filemanager.php">Файловый архив</a>
Вот этот валидатор еще к ней прикрепляет SID сессии и там уже находит ошибку. Вот как здесь быть?

Автор: skyboy 29.12.2007, 09:02
Цитата(Staind @  29.12.2007,  00:14 Найти цитируемый пост)
ругается на знак & в ссылке:

по стандарту, набор символов в купе с впереди идущим "&" - это http://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%B5%D0%BC%D0%BE%D0%BD%D0%B8%D0%BA%D0%B8_%D0%B2_HTML(к примеру, &nbsp; или &gt;  - как раз такие "сущности" или "мнемоники").
таким образом, если валидатор встречает у тебя "&Василий", то пытается найти в списке доступных по DTD(или определенных глобально - вот этот ньюанс мне неизвестен) мнемонику("сущность" мне боьше нравится) вида "&В" или "&Ва" или "&Вас". И не находит. О чем и сообщается.
Чтоб таким не занимался валидатор(браузеры, кстати, тоже такое делают, правда, в отличии от валидатора, если не получилось найти эквивалент в списке замены, они так и оставят просто "&") надо просто воспользоваться сущностью "&amp;", которая означает тот же символ "&".
Цитата(Staind @  29.12.2007,  00:33 Найти цитируемый пост)
Вот этот валидатор еще к ней прикрепляет SID сессии и там уже находит ошибку. 

с каких это пор валидатор меняет содержимое документа? с чего ты взял, что это валидато "виноват"? и где в приведенном тобой коде пример "SID сессии", на которую ругается валидатор?

M
skyboy
Никакого отноешения к методу генерированияЩ(а значит, и к PHP) валидация HTMLне имеет. ПЕремещаю в "Теорию Web-дизайна"

Автор: Staind 29.12.2007, 11:51
2skyboy, вот, пожалуйста, линк:
http://validator.w3.org/check?uri=http%3A%2F%2Fitbuben.ru%2Findex.php&charset=%28detect+automatically%29&doctype=Inline&group=0
Везде ругается на строку с ссылкой на файловый архив http://itbuben.ru    там в правой части (Файл. архив) есть три ссылки. Вот на них он как раз и ругается, что типа в ссылки дописывается сессия и там вместо & надо поставить его html сущность, но я что-то не могу догнать - "как?".

Автор: skyboy 29.12.2007, 12:06
Цитата(Staind @  29.12.2007,  00:33 Найти цитируемый пост)
Вот этот валидатор еще к ней прикрепляет SID сессии и там уже находит ошибку. Вот как здесь быть?

зайди сам на свою же страницу "itbuben.ru/index.php" и убедись, что "ID_ITBuben=5aea0c61288b84166ab8157a3791ded5" дописывает твой код, а не валидатор.

Автор: Kangaroo 29.12.2007, 12:10
Staind, 
вот цитата из описания первой ошибки:
Цитата

If this error appears in some markup generated by PHP's session handling code, http://www.w3.org/QA/2005/04/php-session has explanations and solutions to your problem.


Почитай, может это то, что тебе нужно.

Автор: skyboy 29.12.2007, 12:10
http://jigsaw.w3.org/css-validator/validator?profile=css21&warning=0&uri=http%3A%2F%2Fitbuben.ru%2Findex.php, кстати, тоже сигналит об ошибках
а validator.w3.org на данный момент не работает. 

Автор: Staind 29.12.2007, 13:01
ЭТО ЕЩЕ РАЗ ДОКАЗЫВАЕТ, ЧТО ЗДЕСЬ СИДЯТ СУПЕР МЕГА ЛЮДИ - СПАСИБО ПАРНИ! smile

Итак. 2Kangaroo, спасибо за линк! Прочитал от корки до корки статью (что в линке). Я короче в .htaccess добавил строку php_value arg_separator.output &amp; и все ошибки разом ушли smile))))))) 

2skyboy, блин он сигналит не по делу, он ругается на пункты "scrollbar..." и на прозрачность некоторых элементов. Мне вот интересно, а нельзя сделать так, чтобы он на это все не ругался?

И еще проверяю страничку index.php снова валидатором. Ошибок нет, а вот один ворнинг есть: "Line 287, Column 123: NET-enabling start-tag requires SHORTTAG YES.
…e="c222d465ed518b496e4a942d9cb516fb" /> (подсвечивает мне символ в конце /)
The sequence <FOO /> can be interpreted in at least two different ways, depending on the DOCTYPE of the document. For HMTL 4.01 Strict, the '/' terminates the tag <FOO (with an implied '>'). However, since many browsers don't interpret it this way, even in the presence of an HMTL 4.01 Strict DOCTYPE, it is best to avoid it completely in pure HTML documents and reserve its use solely for those written in XHTML."

Я нашел строку 287, там написано </tr> Странно но вообще не пойму от куда он это берет.

Автор: skyboy 29.12.2007, 13:28
Цитата(Staind @  29.12.2007,  12:01 Найти цитируемый пост)
The sequence <FOO /> can be interpreted in at least two different ways, depending on the DOCTYPE of the document. For HMTL 4.01 Strict, the '/' terminates the tag <FOO (with an implied '>'). However, since many browsers don't interpret it this way, even in the presence of an HMTL 4.01 Strict DOCTYPE, it is best to avoid it completely in pure HTML documents and reserve its use solely for those written in XHTML

означает, что сокращенный вариант записи тегов("<br />" или "<img />") рекомендуется оставить только для типа XHTML. для HTML(даже strict-модели) лучше использовать теги без слеша.
Цитата

it is best to avoid it completely in pure HTML documents and reserve its use solely for those written in XHTML

Цитата

лучше избегать в HTML и оставить только для  XHTML

Автор: Kangaroo 29.12.2007, 13:30
Staind, 
ругается на эту строку:
Код

<input type="hidden" name="ID_ITBuben" value="fe337e6635934af3c8e22cf6109074f6" />

А вот почему - я не знаю. Вроде нормальное закрытие...

Автор: Staind 29.12.2007, 13:46
2skyboy, я понял, только не вкурил, что за строка.

2Kangaroo, от куда ты ее нашел? :( Я весь код перерыл, нигде нет. У меня на index.php странички только одна форма есть, но никаких скрытых полей там вовсе нет :( От куда он вообще ее взял?

Автор: skyboy 29.12.2007, 14:39
Цитата(Staind @  29.12.2007,  12:46 Найти цитируемый пост)
Я весь код перерыл, нигде нет. 

ты не РНР смотри. ты смотри HTML. 
это скрытое поле, как и SESSID в адреса, добавляет РНР в процессе работы с сессиями.

Автор: Staind 29.12.2007, 15:15
Так понятно почему, skyboy, я тогда смотрел html код, когда в браузере было включено принятие в куки SID сессии. Проверил без включения куки и эти поля появились. А как задать интерпретатор php, чтобъ в этом месте:
Код

<input type="hidden" name="ID_ITBuben" value="fe337e6635934af3c8e22cf6109074f6" />

Он в конце не проставлял слэш?

Автор: Kangaroo 29.12.2007, 17:38
Staind, посмотрите http://lists.evolt.org/archive/Week-of-Mon-20060327/181226.html. Там такая же проблема и есть решение.

Автор: Staind 29.12.2007, 18:42
2Kangaroo, спасибо. Прочитал я там все несколько раз. Некий Бэн говорить обрамлить все элементы, находящиеся после тэга <form> в тэг "fieldset". Я обрамлять - ничего не получилось :( Я пробовал даже ЗА тэгом <form> ставить - все в пустую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)