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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Введение недопустимых символов в поле сообщения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
T-Mon
Отправлено: 25 Ноября, 2007 - 11:45:37
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




К примеру:
",$,',\,&

Юзаю функцию типа:
PHP:
скопировать код в буфер обмена
  1. $name=isset($_POST['name'])?$_POST['name']:'';
  2. $post=eregi_replace('"','\"',$post);


Но потом данные не записываются в базу. Как с этим правильно манипулировать?
 
 Top
valenok Модератор
Отправлено: 25 Ноября, 2007 - 13:30:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




mysql_escape_string\n\n(Добавление)
+ htmlspecialchars


-----
Truly yours, Sasha.
 
My status
 Top
UncleDeaFF
Отправлено: 25 Ноября, 2007 - 20:03:52
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2007  
Откуда: Пермь


Помог: -1 раз(а)




я бы вот что посоветовал. будет правда немного нагружать но всеже Улыбка
CODE (text):
скопировать код в буфер обмена
  1.  
  2. foreach($HTTP_POST_VARS as $key=>$val){
  3. $val=htmlspecialchars($val,ENT_QUOTES);
  4. $key=$val;};
  5.  
 
 Top
valenok Модератор
Отправлено: 25 Ноября, 2007 - 22:34:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Больше такого не советуйте.
Не дай бог ктото этому послушается


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 26 Ноября, 2007 - 10:17:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Что-то у нас на форуме стало много некомпетентных "советчиков" ((*
Вообще valenok прав, используйте mysql_escape_string, а для "очистки" Вашей строки можете использовать: preg_replace, прочитать можно тут:
http://php.su/functions/?preg-replace


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 26 Ноября, 2007 - 13:24:59
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Да очищать вообще не обязательно.
Не всегда приятно когда пол твоего сообщения отрезали потому что ктото не умеет обрабатывать данные.


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 26 Ноября, 2007 - 14:50:48
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.         $name=mysql_escape_string(htmlspecialchars($name,ENT_QUOTES));
  2.         $post=mysql_escape_string(htmlspecialchars($post,ENT_QUOTES));
  3.         $query="INSERT INTO `$table` (name, post) VALUES ('$name','$post')";
  4.         mysql_query($query,$data);

Воспользовался этим кодом, но, увы, в базу данных ничего не добавляется...
Если же писать нормальное сообщение, то все рабоет как следует.\n\n(Добавление)
Спасибо всем и прошу прощения.
Вот снова проглядел! Ведь у меня в БД на размер имени стоит ограничение в 20 символов, а ведь после приведения строки в надлежащий вид кол-во символов может расти... а я это не учел, вот по этому и не добавлялось.\n\n(Добавление)
Только хотелось бы узнать: обязательно ли применение mysql_escape_string после htmlspecialchars, насколько я понял работу они выполняют одинаковую..?
 
 Top
EuGen Администратор
Отправлено: 26 Ноября, 2007 - 15:39:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вы неправильно поняли. Советую посмотреть тут про эти функции:
http://php.su/functions/?htmlspecialchars
http://php.su/functions/?mysql-escape-string


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 26 Ноября, 2007 - 15:47:40
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
Только хотелось бы узнать: обязательно ли применение mysql_escape_string после htmlspecialchars, насколько я понял работу они выполняют одинаковую..?


Работу они выполняют разную.
обязательно НЕ примененять mysql_escape_string после htmlspecialchars в том виде в котором это сделали вы\n\n(Добавление)
Пора собирать базу книжек которые категорически запрещено читать.

где вы насмотрелись запросов на подобии этого
$query="INSERT INTO `$table` (name, post) VALUES ('$name','$post')";
?


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 26 Ноября, 2007 - 19:09:42
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




А почему мой метод непрвилен (mysql_escape_string(htmlspecialchars($name,ENT_QUOTES)))?
Странно, а что вам не понравилось в моей запросе, вроде бы все корректно работало и работает... что нужно изменить и почему?
P.S. Книга Зольникова Д.С. "Как самостоятельно создать сайт любой сложности".
 
 Top
Devoll
Отправлено: 26 Ноября, 2007 - 22:53:24
Post Id



Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Июль 2007  


Помог: 0 раз(а)




Осмелюсь предположить, что лучше именно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query="INSERT INTO `".$table."` (name, post) VALUES ('".$name."','".$post."')";
  3.  


По скорости уж намного быстрее вашего метода (примерно на 30%)
 
 Top
T-Mon
Отправлено: 27 Ноября, 2007 - 07:48:11
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Да, понял, но а в чем тут (mysql_escape_string(htmlspecialchars($name,ENT_QUOTES))) беда?
 
 Top
valenok Модератор
Отправлено: 28 Ноября, 2007 - 13:27:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Сами же написали
Цитата:
Ведь у меня в БД на размер имени стоит ограничение в 20 символов, а ведь после приведения строки в надлежащий вид кол-во символов может расти


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 28 Ноября, 2007 - 22:55:47
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Ладно, поставим вопрос иначе, нашел я описание ф-и mysql_escape_string, но, увы, не разобрался, что она конкретно дает...
 
 Top
valenok Модератор
Отправлено: 29 Ноября, 2007 - 01:38:50
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




mysql_escape_string — Escapes a string for use in a mysql_query
This function will escape the unescaped_string , so that it is safe to place it in a mysql_query().

В переводе звучит как.
Функция читает магические заклинания над строкой, так чтобы
она безопастно умещалась в mysql_запрос


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB