Спасибо. Оказывается и мой грубый вариант работает, где то ошибка в коде в другом месте.
Потому как при просмотре исходного кода страницы как раз выдается как мне надо.
Но попробую ваши варианты, все таки моя php- вставка - некрасиво))
я их не применял, использую простой JS-скрипт, но, действительно. при каждом обновлении записи ко всем кавычкам добавляется еще один слэш
update() например экранирует все виды кавычек, например. Именно при записи в базу
По итогу трехдневных мучений остался примерно там же где начинал.
Выводы (может будет кому-нибудь полезно)
- встроенные в Wordpress функции update и insert уже сами неплохо экранируют, если не нужен большой функционал - применение их вместе с strip_tag вполне достаточно.
- создать свою форму с использованием вышеуказанных и нормальным функционалом для пользователя невозможно. Максимум можно разрешить теги. Эти функции намертво экранируют кавычки, поэтому добавить произвольный стиль не получается.
как бороться не знаю...
Вот соглашусь. В настоящем виде эффект от ГГЛ совсем маленький. Сапа выгоднее. И размещать обзоры перестал - сайт прибивает конкретно, хотя продавал только для тематических сайтов.
Вообще то есть тема, посвященная WP, ради простого вопроса не стоит создавать отдельную...
Ставьте плагин All-in-One SEO pack или аналогичный и делайте дескрипшены для чего угодно.
Собственно, strip_tags - первое что сделал. +addslashes. с BB-кодами не разбирался, как их подключить.
htmlspec - именно счас разбираюсь.
А можно привести примеры опасных запросов, которые могут повредить сайт или базу? Можно в личку, хочется проверить защиту)))
Я б вам дал доступ на сайт в тест, но боюсь - вдруг вы мне все уничтожите))))
В форме пользователь заполняет данные о своей фирме- должен быть минимальный обьем доступных тегов для форматирования документа, данные на русском языке, поэтому все эти дропы могу смело запрещать. Доступны абзацы, переносы, заголовки, списки и по мелочи. Для этого к текстареа подключил JS вставку тегов, остальные закрыл как писал выше. Сам метод update как выяснилось добавляет слэши к кавычкам, так что возникла проблема - не работает вставка стилей через спан. Но это некритично.
И вообще что-то мне уже кажется, что я заморачиваюсь больше чем надо. Но все советы с благодарностью приму, так же как и примеры готовы решений.
Добавил еще регулярку которая просто убирает всякие drop и onmouse..
метод update, оказывается, автоматически экранирует кавычки.
Спасибо за подсказку с null - попробую. Я уже ночью во сне тоже пришел к выводу что нужно попробовать убрать.
В силу малоопытности не очень понимаю как это может пройти - обьясните на примерах ?
$wpdb->insert( 'mytable', array('myrow' => $value) ); $wpdb->prepare( 'INSERT INTO table (myrow) VALUES (%s)', $value, //an unescaped string (function will do the sanitization for you) );
попытался добавить prepare - перестала работать запись. Где то нарушил синтаксис. в VALUES нужно %s или %d указывать через запятую количеством в строгом соответствии с $value?
делал так:
$wpdb->query( $wpdb->prepare( "INSERT INTO `my_table` ( id, post_content, meta_value, post_excerpt ) VALUES ( %d, %s, %d, %s )", array( NULL, $metakey, 0, ' ' ) ) );