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

Форум PHP

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

 

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

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

тема: спец символы, проблема
 
 автор: shimi   (09.06.2005 в 07:54)   письмо автору
 
 

работает форма по добавлению текста в базу через скрипт PHP, а потом и вывод содержимого базы

попался текст с символом "/", скрипт грузить текст не хочет, выдает ошибку, запутался в вещах типа htmlspecialchars, trim. strtr, не знаю что использовать, подскажите

   
 
 автор: cheops   (09.06.2005 в 12:04)   письмо автору
 
   для: shimi   (09.06.2005 в 07:54)
 

Пусть в базу данных необходимо поместить текстовую переменную $name, а затем вывести её на HTML-страницу. Для этого, перед занесением в базу данных экранируются все спец-символы
<?php
  
if (!get_magic_quotes_gpc()) $name mysql_escape_string($name);
?>

А перед выводом переменной на HTML-страницу она пропускается через функцию htmlspecialchars
<?php
  
echo htmlspecialchars($name);
?>

   
 
 автор: amitiresome   (12.06.2005 в 00:31)   письмо автору
 
   для: cheops   (09.06.2005 в 12:04)
 

здесь описано использование htmlspecialchars перед выводом на страницу, а можно ли и нужно ли использовать это в скрипте, который отправляет данные в базу:

форма, обработка скриптом (в скрипте такие строки

$name=trim($_POST['name']);
$name=substr($_POST['name'],0,256);
$name=htmlspecialchars(stripslashes($name));


затем в этом скрипте уже идуд SQL-запросы для добавления в базу

P.s.: и можно на пальцах объяснить различие между этими тремя функциями, а то я пока плаваю в этом

   
 
 автор: cheops   (12.06.2005 в 01:01)   письмо автору
 
   для: amitiresome   (12.06.2005 в 00:31)
 

Да можно, использовать htmlspecialchars и перед занесением в базу данных, но это не спасёт от SQL-инъекций, которые могут повредить базу данных или с помощью которых может быть похищена кофиденциальная информация.

1) Функция trim http://www.softtime.ru/dic/id_dic=78&id_group=1 обрезает ведущие и конечные пробельные символы, т.е. принимая строку
'   это строка   '

она вернёт
'это строка'

2) Функция substr http://www.softtime.ru/dic/id_dic=3&id_group=1 вырезает из строки подстроку, в данном случае вырезается строка начиная с 0 символа длиной 256 символов - по сути её функция здесь сводится к тому, чтобы отрезать лишние после символы и длина строки не привышала 256 символов.
3) Функция htmlspecialchars http://www.softtime.ru/dic/id_dic=28&id_group=1 превращает все HTML-тэги в их видмые эквиваленты, в этом случае символы < и > отображаются на странице, хотя кругом HTML-код и любые тэги должны скрываться браузером и интерпретироваться. Функция htmlspecialchars заменяет < и > на &lt; и &gt;, что приводит к отображению их, поэтому встроить HTML-код в страницу уже не удастся.

   
Rambler's Top100
вверх

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