Валидация кода ПХП

Автор kak2z, 21 февраля 2012, 09:53:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

Друзья) Сегодня решил проверить свои несчастные несколько десятков строк кода на валидаторе)  - выдал мне 900 ошибок.
Вопрос: когда пишешь код на пхп что нужно использовать в хтмл вставках &lt; или < ?
Спасибо)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

maestrosite.ru

Цитата: kak2z от 21 февраля 2012, 09:53:44
  - выдал мне 900 ошибок.
вы постарались... я даже себе такого не позволяю =)

Насколько я понял, речь идёт о валидаторе http://validator.w3.org/ Однако, он не проверяет пхп-код, он проверял хтмл - то есть результат работы пхп-кода.
Не понятно, что вы имеете ввиду под "использовать в хтмл вставках". Вызвать пхп-код их хтмл-я? Или в пхп-коде сформировать хтмлъ?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

kak2z

Ну он у меня ругался как я понял на амперсанды на " <" и еще на что то)) а вставки я имею ввиду такое

echo '<a href="http://www.simplemachines.ru" target="_blank">Super simplemachines</a>';

Может что бы валидатор не ругался надо делать так
echo '&lt;a href="http://kak2z.ru/index.php?page=page1287&amp;p1=0&amp;p2=20&amp;cat=0" target="_blank"&gt;Super forum&lt;/a&gt;';

хотя так текст нечитаем)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

maestrosite.ru

Цитата: kak2z от 21 февраля 2012, 10:28:03
Ну он у меня ругался как я понял на амперсанды на " <" и еще на что то)) а вставки я имею ввиду такое

echo '<a href="http://www.simplemachines.ru" target="_blank">Super simplemachines</a>';

Может что бы валидатор не ругался надо делать так
echo '&lt;a href="http://kak2z.ru/index.php?page=page1287&amp;p1=0&amp;p2=20&amp;cat=0" target="_blank"&gt;Super forum&lt;/a&gt;';

хотя так текст нечитаем)

Первый вариант правильный. А валидатор ругается на нарушения вёрстки:
- не прописаны alt для картинок
- не прописаны закрывающие теги
- висячие арибуты ( readonly => readonly="readonly" )
- значения атрибутов не в кавчках
- пути к файлам - & не преобразованы в &amp; (например uLogin)

+ ЯС в секцию CDATA поместите
+ для вывода html на страницу используйте htmlspecialchars

? очень много форм на странице, тем более не отправляемых - зачем?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

kak2z

ЦитироватьПервый вариант правильный. А валидатор ругается на нарушения вёрстки:
Ну вроде ругался и на скобки острые) - не знаю как правильно их назвать <>

Цитировать- не прописаны alt для картинок
спасибо) учту - я сейчас работаю что бы подписи под картинками и альты автоматизировать

Цитировать- не прописаны закрывающие теги
не понял))) если бы теги не закрывались то бы пхп не выполнялся..

Цитировать- висячие арибуты ( readonly => readonly="readonly" )
Почему они висячие? Специально что бы текст в формах не меняли случайно

Цитировать- значения атрибутов не в кавчках
каких атрибутов?

Цитировать- пути к файлам - & не преобразованы в &amp; (например uLogin)
ну это да... у меня тоже так было но я уже исправился)) но лезть в юЛогин не хочется)

Цитировать+ ЯС в секцию CDATA поместите
вообще не понял)

Цитировать+ для вывода html на страницу используйте htmlspecialchars
хм.. echo не катит? просто я сколько вижу примеров везде echo.  ни разу не видел htmlspecialchars.

Цитировать? очень много форм на странице, тем более не отправляемых - зачем?
Формы для того что бы можно было скопировать код для вставки картинок)


Спасибо большое!!!!!
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

maestrosite.ru

Цитата: kak2z от 21 февраля 2012, 11:30:03
Ну вроде ругался и на скобки острые) - не знаю как правильно их назвать <>
что-то типа такого:

echo '<input value="', htmlspecialchars( $url ) , '" />';


Цитироватьне понял))) если бы теги не закрывались то бы пхп не выполнялся..
хтмл-теги, самому пхп фиолетово на выводимые данные. С указанным вами док тайпом все элементы должны иметь закрывающий тег, либо краткую запись для "однотеговых". Например, input, img, и тд должны быть со слешем перед закрывающей угловой скобкой
<img ... />
<input ... />


ЦитироватьПочему они висячие? Специально что бы текст в формах не меняли случайно
Так же, для указанного доктайпа атрибут readonly должен иметь значение:
<input ... readonly="readonly" ... />

Цитироватькаких атрибутов?
та вот, например (добавил перевод строки, что бы цитату не распирало)
<p><a href=http://kak2z.ru/index.php?topic=12752.0><img src=/pic/konk11.png></a>
<a href=https://twitter.com/#!/kak2z><img src=/pic/twitter_01.png></a></p>


Цитироватьну это да... у меня тоже так было но я уже исправился)) но лезть в юЛогин не хочется)
а туда и не надо лезть. Здесь надо заменить:
<script src="http://ulogin.ru/js/widget.js?display=small&fields=first_name,...

Цитироватьвообще не понял)
подобные подключения, там где идёт выполнение ЯС-кода:

<script type="text/javascript">
var MGCD = new Date();
...
</script>

добавьте

<script type="text/javascript"><!-- // --><![CDATA[
var MGCD = new Date();
...
// ]]></script>



Цитироватьхм.. echo не катит? просто я сколько вижу примеров везде echo.  ни разу не видел htmlspecialchars.
пример, в первой цитате. Если вы смотрите на код SMF, так там многие данные уже экранированы. Для примера можете сделать var_dump/print_r интересующей переменной.

ЦитироватьФормы для того что бы можно было скопировать код для вставки картинок)
клик на поле ввода - и так приводит к выделению нужного кода ЯС-ом
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

kak2z

Цитата: transkontrol от 21 февраля 2012, 11:52:05что-то типа такого:
echo '<input value="', htmlspecialchars( $url ) , '" />';
Не совсем понял, но спасибо за наводку)) почитаю.


Цитата: transkontrol от 21 февраля 2012, 11:52:05хтмл-теги, самому пхп фиолетово на выводимые данные. С указанным вами док тайпом все элементы должны иметь закрывающий тег, либо краткую запись для "однотеговых". Например, input, img, и тд должны быть со слешем перед закрывающей угловой скобкой
Понял! Спасибо! А я не мог понять нафига слеш ставить если раньше не надо было ставить))


Цитата: transkontrol от 21 февраля 2012, 11:52:05Так же, для указанного доктайпа атрибут readonly должен иметь значение:
<input ... readonly="readonly" ... />
Спасибо.. я просто видел пример - там не было такого.. обязательно почитаю.


Цитата: transkontrol от 21 февраля 2012, 11:52:05та вот, например (добавил перевод строки, что бы цитату не распирало)

    <p><a href=http://kak2z.ru/index.php?topic=12752.0><img src=/pic/konk11.png></a>
<a href=https://twitter.com/#!/kak2z><img src=/pic/twitter_01.png></a></p>


То есть все ссылки надо заключать в <p>???????</p> ??

Цитироватьподобные подключения, там где идёт выполнение ЯС-кода:
У меня там так сделано
<form action="">
<input type="text" name="bblink" readonly size="20" maxlength="50" onClick="this.select()" value="[url='.$domain.'/index.php?page=page1287&amp;p1='.$pag1.'&amp;p2='.$pag2.'&amp;cat='.$cat.'][img]'.$main_url_0.'/'.$file_array[$i].'[/img][/url]">
<input name="button" type="button" style="width: 150px;" onclick="javascript:this.form.bblink.focus();this.form.bblink.select();" value="ББ Код" />
</form></td>';

Яваскрипт код вообще никак не объявляю

Цитироватьпример, в первой цитате. Если вы смотрите на код SMF, так там многие данные уже экранированы. Для примера можете сделать var_dump/print_r интересующей переменной.
Хоть и не понял - но буду читать) Главное теперь знаю что читать))

Цитироватьклик на поле ввода - и так приводит к выделению нужного кода ЯС-ом
Ну да.. я чуть выше код привел... может мы говорили про разные блоки ЯС-а?

Спасибо!!)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

maestrosite.ru

Цитата: kak2z от 21 февраля 2012, 12:27:21
То есть все ссылки надо заключать в <p>???????</p> ??
нет. Сами значения атрибутов должны быт в кавычках:
<p><a href="http://kak2z.ru/index.php?topic=12752.0"><img src="/pic/konk11.png"></a>
<a href="https://twitter.com/#!/kak2z"><img src="/pic/twitter_01.png"></a></p>


ЦитироватьУ меня там так сделано
<form action="">
<input type="text" name="bblink" readonly size="20" maxlength="50" onClick="this.select()"
value="[url='.$domain.'/index.php?page=page1287&amp;p1='.$pag1.'&amp;p2='.$pag2.'&amp;cat='.$cat.'][img]'.$main_url_0.'/'.$file_array[$i].'[/img][/url]">
<input name="button" type="button" style="width: 150px;"
onclick="javascript:this.form.bblink.focus();this.form.bblink.select();" value="ББ Код" />
</form></td>';

Яваскрипт код вообще никак не объявляю
в приведённом коде - объявляете/используете:

onClick="this.select()"
...
onclick="javascript:


Однако, момент про секцию CDATA относится к другим блокам. Клики - это там, где вы привели. CDATA - там, где я показал.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

kak2z

Спасибо большое)!) Вроде на вид все просто в пхп)) А нюансов немеряно)) Но как же интересно)))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

maestrosite.ru

У меня сложилось впечатление, что вы немножко сильно смешиваете PHP и HTML.
- Не всегда HTML - это результат работы именно PHP,
- не всегда результат работы PHP это HTML.

Опять же, на примере SMF. Файлы локализаций и файлы шаблонов - это "валидные" пхп-файлы. Вы можете их запускать на выполнение, ошибок не будет. Однако, и в выходном потоке ничего не будет. Или файлы из секций <code>|<database> любого мода. Это валидный ПХП-файлы.  Их также можно запускать на выполнение (правда, как правило, только из форумной папки). Эти файлы могут много чего делать, но в выводном потоке HTML-я не будет. Максимум - это текстовые уведомления в режиме SSI

За себя могу сказать так. Валидный ПХП-код - это тот, который работает и после себя в логах не оставляет PHP Notice/PHP Fatal....
А валидатор w3.org проверяет корректность готового документа, в соответствии с заданным DOCTYPE.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

kak2z

У меня последний опыт чего то писать для веба был лет 15 назад) тогда все делал на HTML - помню еще с фреймами) Сейчас их как то совсем не используют для сайтов)
Как я понимаю на HTML сейчас только статические страницы делают. Если надо динамические то это ПХП.
А результат выполнения ПХП скрипта на сервере это уже HTML код который собственно и выводит браузер.
Я так представляю работу ПХП)
Спасибо)!
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Istoric

Простите лузера. Прогнал свой форум через этот валидатор http://validator.w3.org/

Выдал 

"Errors found while checking this document as XHTML 1.0 Transitional!Result:   203 Errors, 42 warning(s)"

Это много мало или забить? )) Если не забить то что делать? )

Судя по надписям ругается на угловые скобки <> и & в разных местах

maestrosite.ru

Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

Slavegirl

#13
На сёрче писали, что валидный код сайта - это 9-й по значимости пункт в алгоритме ранжирования поисковых систем. Пару недель назад также решила заняться данным вопросом, ошибок оказалось около 70 плюс предупреждения (немного моих ошибок, остальные от модификаций и баннерной рекламы).

Потратила полдня и привела все видимые пользователям страницы в валидное состояние, форум теперь полностью проходит проверку:

http://validator.w3.org/check?uri=http%3A%2F%2F[censored]%2F&charset=%28detect+automatically%29&doctype=Inline&group=0

Не забывайте так же проверить на корректность CSS-файлы:

http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2F[censored]%2F&profile=css3&usermedium=all&warning=1&vextwarning=&lang=ru

Даже виджеты Твиттера, на которые жалуется весь Интернет, удалось сделать валидными :)

Sallavan

Здравствуйте извиняюсь что поднимаю старую тему помогите решить проблему со скобками, валидатор ругается

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.vectorprava59.ru%2F&charset=%28detect+automatically%29&doctype=Inline&ss=1&outline=1&group=1&No200=1&verbose=1&user-agent=W3C_Validator%2F1.3+http%3A%2F%2Fvalidator.w3.org%2Fservices


Серый Лис

#15
Проверил сайт, есть пара ошибок.

Sallavan

Цитата: Sallavan от 05 апреля 2014, 00:31:27Здравствуйте извиняюсь что поднимаю старую тему помогите решить проблему со скобками, валидатор ругается

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.vectorprava59.ru%2F&charset=%28detect+automatically%29&doctype=Inline&ss=1&outline=1&group=1&No200=1&verbose=1&user-agent=W3C_Validator%2F1.3+http%3A%2F%2Fvalidator.w3.org%2Fservices


а мне так никто и не подскажет что делать?

Серый Лис

#17

Почему бы не обновить "движок" форума?



Sallavan

Цитата: digger® от 05 апреля 2014, 18:44:08
Обратиться к Green Shtemberg, которые такой сайт надизайнили?

а что нибуть более по существу? без обновлений, смены и так далее, меня интересует конкретно как это исправить ибо даже не понимаю в чем ошибка

digger®

Цитата: Sallavan от 05 апреля 2014, 18:50:38
а что нибуть более по существу? без обновлений, смены и так далее, меня интересует конкретно как это исправить ибо даже не понимаю в чем ошибка
По существу, у вас Джумла, на которой тема оформления с кучей ошибок html разметки. Про каждую ошибку валидатор вполне понятно поясняет, в чем она.

Sallavan

Цитата: digger® от 05 апреля 2014, 19:26:17
По существу, у вас Джумла, на которой тема оформления с кучей ошибок html разметки. Про каждую ошибку валидатор вполне понятно поясняет, в чем она.


ок поясняет, но он не поясняет как их исправить, можете привести пример исправления хоть одной ошибки?

GeorG

Цитата: Sallavan от 05 апреля 2014, 21:39:42ок поясняет, но он не поясняет как их исправить, можете привести пример исправления хоть одной ошибки?
Например самая первая ошибка:
ЦитироватьLine 60, column 70: Bad value for attribute type on element script: Expected a MIME type but saw the empty string.

<script src="/plugins/system/plazart/base/js/off-canvas.js" type=""></script>
Сразу же дается пояснение, что не указан тип, нужно найти этот отрывок где-то у вас в коде и исправить на:
<script src="/plugins/system/plazart/base/js/off-canvas.js" type="text/javascript"></script>

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Sallavan

Цитата: GeorG от 05 апреля 2014, 22:51:22
Например самая первая ошибка:Сразу же дается пояснение, что не указан тип, нужно найти этот отрывок где-то у вас в коде и исправить на:
<script src="/plugins/system/plazart/base/js/off-canvas.js" type="text/javascript"></script>



спасибо, а можете прокомментировать хоть одну ошибку с закрывающей скобкой?

GeorG

Цитата: Sallavan от 05 апреля 2014, 23:04:41а можете прокомментировать хоть одну ошибку с закрывающей скобкой?
Не все теги, можно оставлять открытыми. Для других комментариев, нужно видеть исходный код.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Sallavan

Ошибка

Line 473, column 193: Unclosed element span.
<div class="content wk-content clearfix"></div[color=red]>[/color]


исходный код

<?php
$widget_id $widget->id.'-'.uniqid();
$settings  $widget->settings;

?>


<div id="accordion-<?php echo $widget_id;?>" class="wk-accordion wk-accordion-default clearfix" <?php if (is_numeric($settings['width'])) echo 'style="width: '.$settings['width'].'px;"'?> data-widgetkit="accordion" data-options='<?php echo json_encode($settings); ?>'>
<?php foreach ($widget->items as $key => $item) : ?>
<h3 class="toggler"><?php echo $item['title'];?></h3>
<div class="content wk-content clearfix"><?php echo $item['content'];?></div>
<?php endforeach; ?>
</div>

GeorG

Цитировать113 Errors, 4 warning(s)
Все так ошибки будем править?
Вам наверное лучше сюда - Предложения по работе
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Sallavan

#27
нет что вы, только эту дальше я сам разберусь буду очень благодарен если поможете, или хотя бы ткните где почитать про это