Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2012, 10:11   #1
Anton
Пользователь
 
Регистрация: 06.08.2007
Сообщений: 43
По умолчанию проверка данных - база данных

Подскажите, что лучше использовать функции для проверки строки (addshashes, HtmlSpecialChars и прочие) для добавления в базу данных или лучше использовать регулярные выражения.
Anton вне форума Ответить с цитированием
Старый 05.08.2012, 10:37   #2
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Цитата:
Сообщение от Anton Посмотреть сообщение
лучше использовать регулярные выражения.
Лучше использовать все вместе: настроить собственные правила валидации каждого из полей. Обычно использую нечто что-то вроде этого (методы класса валидации):

PHP код:
        /** Обычный текст без тегов, без кавычек и прочей дряни */
    
public function plainText$str ){
        if( 
$str ){
            
$stripSymbols '/[^A-Za-zА-ЯЁа-яё0-9_\s\,\.\:\;\~\!\@\#\$\%\&\*\№\?\(\)\-\=\+\[\]\<\>]/u';    // Перечисляем разрешенные символы/ Рубим все кавычки!    /u - модиффатор для работы с UTF-8
            
$str preg_replace$stripSymbols ''$str); // Оставляем т/о разрешенные символы 
            
$str strip_tags$str );                      // Режем теги
            
$str trim($str);
        }
        return 
$str;
    }
    
        
/** Обычный текст без тегов, без кавычек и прочей дряни. Дополнительно:
         * 1. Много пробелов заменяется одним пробелом 
         * 2. Много последовательных символов переноса строки (в перемешку с пробелами) заменяется одним символом переноса
        */
    
public function plainTextCool$str ){
        if( 
$str ){
            
$str self::plainText$str );
            
$str preg_replace'/[ ]{2,}/u' ' ' $str );     // Повторые пробелы заменяем одиночным
            
$str preg_replace'/[\s]{2,}/u'"\n"$str );     // Все остальные многократыне пробельные [\s]=[ \f\n\r\t\v] заменяем одним переносом  
        
}
        return 
$str;
    } 
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.

Последний раз редактировалось InternetStranger; 05.08.2012 в 22:10.
InternetStranger вне форума Ответить с цитированием
Старый 05.08.2012, 17:16   #3
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Лучше всего не морочить себе голову и использовать prepared statements, которые реализованы в mysqli и PDO. На выходе оборачивать в htmlspecialchars()
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
база данных. добавление и удаление данных midiss Общие вопросы Delphi 3 09.12.2011 13:07
База данных и технология хранения данных Kate1 Помощь студентам 2 17.11.2011 23:27
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
проверка базы данных на корректность веденных данных samouelson БД в Delphi 1 20.12.2009 17:23
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34