Вставка скрапта в строку бд

Статус
В этой теме нельзя размещать новые ответы.

fredis69

Постоялец
Регистрация
24 Окт 2008
Сообщения
84
Реакции
2
Здравствуйте!

Немогу понять что происходит, есть скрипт редактирования данных в БД.
При обновлении данных, если в поле с текстом вставить скрипт, то при обновлении данных происходит ошибка:"По техническим причинам обновление не удалось произвести, возможно произошел сбой программы. Попробуйте еще раз или обратитесь к разработчикам данной программы!"
Эта таблица служит для хранения данных для различных блоках на сайте, в данном случае редактируется нижняя часть сайта(там находятся баннеры различных каталогов и рейтингов)

PHP:
$result = mysql_query ("UPDATE blocks SET  title='$title' , filling='$filling' WHERE id='$id'");
if ($result == 'true') 
{
echo "<META HTTP-EQUIV=\"refresh\" content=\"1;URL=".$linka."admin/cms/filling/2/=review\">"; 
echo "<p align='center'><h2 align='center'>Обновление произведено успешно!</h2></p>";
}
else {echo "<p>По техническим причинам обновление не удалось произвести, возможно произошел сбой программы.<br />Попробуйте еще раз или обратитесь к разработчикам данной программы!</p>";}
}
 
нифига не понял

какое поле с текстом?
 
Какой скрипт вставляешь JS, PHP? И что предполагается по выводу этого скрипта - работу или вывод в текстовом формате?
Если нет записи в базу , то проверяем и обрабатываем поле где-то так так:

PHP:
//Обрабатываешь текстовое поле

$text = preg_replace("/\\r\\n|<br>\\r\\n/s","<br>",$text);
//Формируем запрос
$query = "UPDATE ....";

echo $query; // смотришь что в запросе
mysql_query($query);
 
Ппробуй так:
PHP:
$result = mysql_query ("UPDATE blocks SET  title='" . mysql_escape_string($title) . "' , filling='" . mysql_escape_string($filling) . "' WHERE id='$id'");

И $id тоже обязательно надо проверить на соответсвие формату. Если там должно быть число, то я делаю так:
PHP:
$id = (int)$id;
 
Ппробуй так:
PHP:
$result = mysql_query ("UPDATE blocks SET  title='" . mysql_escape_string($title) . "' , filling='" . mysql_escape_string($filling) . "' WHERE id='$id'");
И $id тоже обязательно надо проверить на соответсвие формату. Если там должно быть число, то я делаю так:
PHP:
$id = (int)$id;

Все работает спасибо.
Вот что надо было всего сделать:
PHP:
$filling = mysql_real_escape_string($filling);
//далее следует обновление данных в бд
 
Проверил, работают ли записанные в базы скрипты?
В базу запись идет экранированных спец символов, в связи с чем, при непосредственном выводе, без коррекции, часть скриптов может быть неработоспособной.
 
Проверил, работают ли записанные в базы скрипты?
В базу запись идет экранированных спец символов, в связи с чем, при непосредственном выводе, без коррекции, часть скриптов может быть неработоспособной.

проверил, не работают скрипты, дома на денвере всё работало, а на хостинге нестало, выводит всё экранированное (\), что делать? как исправить?

Добавлено через 24 минуты
Всё задача решена .

перед добавлением содержимого из переменной в БД, делаем так:
PHP:
$filling1 = addslashes($filling1);

после вавода из БД, делаем так:
PHP:
$filling1 = stripslashes($row_footer_block['filling1']);
//и всё можно далее выводить содержимое переменной
echo $filling1;

Вот и всё. Всем спасибо за пом.
 
можно отключить этот дебильный наворот - добавление слешей.
В .htaccess добавить строку
Код:
php_flag magic_quotes_gpc off
Не на всех хостингах будет работать, но на большинстве должно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху