Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Решение ошибок php html ( Валидация по w3c )
Форумы портала PHP.SU » » Вопросы новичков » Решение ошибок php html ( Валидация по w3c )

Страниц (1): [1]
 

1. chestelrfield - 22 Ноября, 2020 - 18:34:56 - перейти к сообщению
Добрый день уважаемые пользователи данного форума, обращаюсь к вам за помощью.
Суть следующая, столкнулся с проблемами на сайте и нет знаний решить их самостоятельно

Ошибка первая

Error: Bad value /out/?url=aHR0cDovL2wybWFkLm5ldA==" for attribute href on element a: Illegal character in query: " is not allowed.

Ошибка вторая

= in an unquoted attribute value. Probable causes: Attributes running together or a URL query string in an unquoted attribute value.

Сайт на котором вылазят ошибки представляет из себя каталог игровых серверов и приходится прятать ссылки через специальный скрипт который содержит в себе

<?php
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
$new_url = base64_decode($url);
header("Location: $new_url");
exit();

?>

Для вывода ссылки на сайте используется

<a rel="nofollow" href=/out/?url=<?php $str = 'http://'.get_the_title(); $codeStr = base64_encode($str); echo $codeStr;?>" target="_blank"><?php the_title(); ?></a>

В конечном результате отображается как

<a rel="nofollow" href="/out/?url=aHR0cDovL2V2aWxheC5uZXQ=&quot;" target="_blank">примерсайта.домен</a>

Читал похожие темы на форуме от новичков но ничего исправить не смог, буду признателен за помощь
2. LIME - 23 Ноября, 2020 - 06:32:03 - перейти к сообщению
CODE (php):
скопировать код в буфер обмена
  1. <a rel="nofollow" href="/out/?url=<?= urlencode(base64_encode('http://' . get_the_title())) ?>" target="_blank">
  2.     <?= get_the_title(); ?>
  3. </a>
3. Vladimir Kheifets - 23 Ноября, 2020 - 08:18:41 - перейти к сообщению
chestelrfield пишет:
В конечном результате отображается как
<a rel="nofollow" href="/out/?url=aHR0cDovL2V2aWxheC5uZXQ=&quot;" target="_blank">примерсайта.домен</a>

Добрый день!
Первая ошибка - потерян urlencode (подсказал, LIME)
Вторая ошибка - после href= потеряна ковычка, парные кавычки подставились автоматически, а непарная ковычка в конце "превратилась" в &quot;
Попробуйте сделать так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $url = urlencode(base64_encode('http://'.get_the_title()));
  3. $title = the_title();
  4. echo <<<EOF
  5. <a rel="nofollow" href="/out/?url=$url" target="_blank">$title</a>
  6. EOF;
  7. ?>
Удачи!
4. LIME - 23 Ноября, 2020 - 08:21:19 - перейти к сообщению
Vladimir Kheifets пишет:
Первая ошибка - потерян urlencode (подсказал, LIME)
я что-то еще упустил?
твой пример не будет работать на большинстве хостингов
(Добавление)
да еще и громоздкий и плохо читается
что за мода лепить хередоки где надо и ненадо
(Добавление)
ко всему the_title() судя по использованию еще и выводит а не возвращает
5. Vladimir Kheifets - 23 Ноября, 2020 - 13:23:50 - перейти к сообщению
LIME пишет:
Vladimir Kheifets пишет:
Первая ошибка - потерян urlencode (подсказал, LIME)
я что-то еще упустил?

Вторая ошибка - после href= потеряна ковычка, парные кавычки подставились автоматически, а непарная ковычка в конце "превратилась" в &quot;
LIME пишет:
твой пример не будет работать на большинстве хостингов
(Добавление)
да еще и громоздкий и плохо читается
что за мода лепить хередоки где надо и ненадо

Работаю много лет на разных хостингах и версиях PHP влоть до актуальной и не встречал чтобы где-то не работало.
Грамоздкий, плохо читается М.б лучше повторять <??> в HTML?
LIME пишет:
(Добавление)
ко всему the_title() судя по использованию еще и выводит а не возвращает

В твоём коде: <?= get_the_title(); ?> Если судить по оригиналу, то д.б. the_title()
6. LIME - 23 Ноября, 2020 - 19:49:02 - перейти к сообщению
Vladimir Kheifets пишет:
Вторая ошибка
ее я тоже учел
Vladimir Kheifets пишет:
Работаю много лет на разных хостингах и версиях PHP влоть до актуальной и не встречал чтобы где-то не работало.
да ... не на большинстве... я уж стал думать что короткие теги отключены по умолчанию(что было бы правильнее) за многие годы
но мне простительно я с хостингами не работаю
в любом случае это бредовая практика - уменьшает портабельность
Vladimir Kheifets пишет:
Если судить по оригиналу, то д.б. the_title()
в оригинале <?php the_title(); ?>
стало быть там вывод типа echo
$title = the_title(); как это будет?

 

Powered by ExBB FM 1.0 RC1