Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: удаление опасных символов
 
 автор: sway   (28.02.2007 в 13:33)   письмо автору
 
 

День добрый!
не подскажите, как удалять при вводе в базу "опасных символов" ?
Имеется ввиду: заношу в базу текст в кот содержится ;:/\ % и прочее, выдает ошибку, в чем могет быть загвоздка, какие символы нельзя заносить? может есть какой то список зарезервированных символов?
вот пример текст блока

+[сообщение] Сказать фразу в торговый чат Trade channel. Фразу увидят любые игроки в радиусе нескольких сотен шагов.
#[сообщение] Сказать фразу в чат группы Party channel. Фразу увидят все игроки, входящие в группу игрока, в любом месте.
@[сообщение] Сказать фразу в чат клана Clan channel. Фразу увидят все игроки, входящие в клан игрока, в любом месте.
$[сообщение] Сказать фразу в чат альянса Alliance channel. Фразу увидят все игроки, входящие в альянс с кланом игрока, в любом месте.
"[персонаж] [сообщение] Сказать фразу указанному персонажу в приватный чат Whisper channel. Фразу увидит только указанный игрок в любом месте.

Друзья\игнор
/friendlist Выводит в чат список "друзей". Здесь указывается статус персонажей - в игре (Online) или вне игры (Offline).
/friendinvite [персонаж] Посылает указанному персонажу приглашение стать "другом". Если персонаж ответит утвердительно, то он появится в списке "друзей".
/frienddel [персонаж] Удаляет указанного персонажа из списка "друзей".

   
 
 автор: dert   (28.02.2007 в 13:46)   письмо автору
 
   для: sway   (28.02.2007 в 13:33)
 

Если Вы скриптом заносите данные, то при внесении данных следует обработать их функцией
htmlspecialchars();

   
 
 автор: sway   (28.02.2007 в 14:01)   письмо автору
 
   для: dert   (28.02.2007 в 13:46)
 

да но я заношу текст, вместе с html кодом, так што думаю этот метод не применим

   
 
 автор: Trianon   (28.02.2007 в 14:29)   письмо автору
 
   для: dert   (28.02.2007 в 13:46)
 

не надо нести бред.

   
 
 автор: Trianon   (28.02.2007 в 14:30)   письмо автору
 
   для: sway   (28.02.2007 в 13:33)
 

смотрите функцию mysql_escape_string()
Символы в БД можно хранить любые - вплоть до хранения двоичных файлов.

   
 
 автор: sway   (02.03.2007 в 09:18)   письмо автору
 
   для: Trianon   (28.02.2007 в 14:30)
 

што значит бред?? при занесении в базу значка # запрос проваливался, при обработке этого знака вышеприведенной функией htmlspecialchars() запрос все равно проваливался!!
Но я проблему решил, хоть и без вашей помощи.

   
 
 автор: Trianon   (02.03.2007 в 10:11)   письмо автору
 
   для: sway   (02.03.2007 в 09:18)
 

htmlspecialchars() - функция для построения кодовых эквивалентов для тех символов текста, которые в языке HTML требуют принудительного кодирования. Ни этот язык, ни сама функция не имеют отношнения к синтаксису построения текстовых литералов, применяемых в языке SQL. Последнюю задачу выполняют функции mysql_escape_string() , mysql_escape_real_string() и всё. Ну еще - с некоторой натяжкой - addslashes(). (последняя - при включенном режиме magic quotes - самим php-движком без разбора натравливается на все входящие параметры скрипта в совершенно неподходящий момент, поэтому вреда от нее больше, чем пользы)

Когда функцию формирования лексем одного языка применяют для языка абсолютно другого, я называю это бредом. Но это была реплика не в Ваш адрес.

А теперь давайте конкретно.
Каким запросом Вы заносили значок # в базу?

   
 
 автор: Ralph   (02.03.2007 в 12:01)   письмо автору
 
   для: Trianon   (02.03.2007 в 10:11)
 

Мда,в этом он прав...Нет,при желании можно конечно убить кавычки через htmlspecialchars(,ENT_QUOTES),но это извращение,так как при этом искажаются < > #,то же самое делать через addslashes или mysql_escape_string. Для автора темы:как я понимаю,на первом месте стоит символ ',символ % тоже может принести проблему в сочетании с одной '.

   
 
 автор: Ralph   (02.03.2007 в 12:24)   письмо автору
 
   для: Ralph   (02.03.2007 в 12:01)
 

Сходил почитал мануал,исходя из фразы "...Примечание: mysql_real_escape_ string() не мнемонизирует % и _...",можно предположить,что символ _ в сочетании с чем то тоже может вызывать вопросы...Символ $ мнемонизировать не надо,но при некорректном использовании непонятку тоже вызвать может

   
 
 автор: Trianon   (02.03.2007 в 13:16)   письмо автору
 
   для: Ralph   (02.03.2007 в 12:24)
 

Вы пытаетесь в общую кучу добавить проблему формирования масок для разного рода поиска (LIKE, RLIKE, и пр. ) Каждый вариант поиска - это отдельный язык, и разбираться с ним нужно отдельно. А к заявленной автором задаче эта проблема вообще никак не относится.

   
 
 автор: Ralph   (02.03.2007 в 15:16)   письмо автору
 
   для: Trianon   (02.03.2007 в 13:16)
 

[поправлено модератором]

   
 
 автор: Trianon   (02.03.2007 в 16:03)   письмо автору
 
   для: Ralph   (02.03.2007 в 15:16)
 

"Без лишних постов" на поставленный вопрос коротко и ясно не ответить, потому что сам вопрос сформулирован с ложным предположением - см. тему ветви.
Приходится разжевывать , подчас долго и упорно.

   
 
 автор: zerocool   (02.03.2007 в 10:22)   письмо автору
 
   для: sway   (02.03.2007 в 09:18)
 

Можно попробывать так

if (!get_magic_quotes_gpc())
  {
    $_GET['asd'] = mysql_escape_string($_GET['asd']);
    }

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования