Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: textarea + БД и перенос строки

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Здесь вы предлагаете делать валидацию ПРИ ВЫВОДЕ а не на входе. Или мне это кажется?
Не вижу цитаты, о которой я вас просил.
Цитата:
Данные в базе нужно хранить в том виде, в каком их ввёл пользователь.
И где тут хоть слово о том, что данные, которые в базе быть не должны по причине валидации, должны идти в базу?
Цитата:
если вместо пароля ввести последовательность "fuck' or '1'= '1" (без кавычек): "select * from userTable where login = 'SiMM' and password = 'fuck' or '1' = '1'"
О да, конечно, как я счастлив, что мне открыли глаза и рассказали про SQL injections, о которых я до селе никогда не слыхивал. Ну так может вы просвятите меня, безграмотного, до конца, каким образом htmlspecialchars помогает избежать ситуации с SQL injection?
И вообще, ответьте на вопрос предыдущего поста - зачем ТАМ (при выводе) addslashes?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 18:34 11-01-2005 | Исправлено: SiMM, 18:40 11-01-2005
kommersant



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привожу еще раз вашу цитату, где вы предлагаете делать валидацию ПРИ ВЫВОДЕ а не на входе. Или под словом "лабуду" вы понимаете, простите, подрочить? :::
 

Цитата:
 Это говорил zalexf
$message=substr( nl2br(htmlspecialchars(addslashes(trim($message)))) ,0,1000);  
 
 Это говорил SiMM
Всю остальную лабуду нужно делать ПРИ ВЫВОДЕ, а не когда попало.  

 
Как я понимаю под остальной лабудой понимается добавление substr, nl2br, htmlspecialchars, trim и addslashes.
 

Цитата:
И вообще, ответьте на вопрос предыдущего поста - зачем ТАМ (при выводе) addslashes?

 
Вы знаете, я тоже не понимаю зачем он ВАМ НУЖЕН ПРИ ВЫВОДЕ, если при выводе обычно ставят stripslashes.
 
 
 
Добавлено
 

Цитата:
И вообще, ответьте на вопрос предыдущего поста - зачем ТАМ (при выводе) addslashes?

 
Соори, я теперь понял, что ЭТО был вопрос...
 
Отвечаю:

Цитата:
 
addslashes
(PHP 3, PHP 4 , PHP 5)
 
addslashes -- Экранирует спецсимволы в строке
Описание
string addslashes ( string str)
 
Возвращает сроку str, в которой перед каждым спецсимволом добавлен обратный слэш (\), например для последующего использования этой строки в запросе к базе данных. Экранируются одиночная кавычка ('), дойная кавычка ("), обратный слэш (\) и NUL (байт NULL).  

 

Всего записей: 107 | Зарегистр. 27-05-2003 | Отправлено: 18:53 11-01-2005 | Исправлено: kommersant, 18:55 11-01-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
под остальной лабудой понимается добавление substr, nl2br, htmlspecialchars, trim  
Так более доходчиво? А по поводу addslashes - бегом читать PHP FAQ: Кавычки. Если Вы работаете с MySQL, ибо ваш addslashes вообще никаким боком к MySQL не относится - это приблуда для Sybase (соответственно при magic_quotes_sybase On весь ваш скопированный откуда-то текст, на который достаточно было дать ссылку, идёт лесом).
Цитата:
я тоже не понимаю зачем он ВАМ НУЖЕН ПРИ ВЫВОДЕ
Где вы видели, что я утверждал, что при выводе надо делать addslashes?
Цитата:
при выводе ... ставят stripslashes
А вот это уже БРЕД. БРЕД, происходящий от непонимания вопроса.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 18:58 11-01-2005
kommersant



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такое чувство, что вы можете только ссылками кидаться, и словами... Сами прочитайте:

Цитата:
 
В PHP есть еще одна экзотическая директива для автоматического изменения ваших данных magic_quotes_sybase.
Если вы с mysql, то она может вам подгадить, поскольку если она включена одновременно с magic_quotes_gpc, то последняя не сработает! То есть, если мы положимся на get_magic_quotes_gpc() и не прослешим данные вручную, то получим все вышеописанные проблемы.

 

Цитата:
И, хотя мне неизвестны случаи, когда эта директива была бы включена, тем не менее, при централизованной обработке данных можно проверять и её.

 
Мне такие случаи тоже неизвестны.
 

Цитата:
ибо ваш addslashes вообще никаким боком к MySQL не относится - это приблуда для Sybase  

 
Так это вообще-то функция PHP а не mysql, и с каких это пор addslashes стала приблудой для Sybase?

Всего записей: 107 | Зарегистр. 27-05-2003 | Отправлено: 19:29 11-01-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это вообще-то функция PHP ... и с каких это пор addslashes стала приблудой для Sybase?
addslashes
Цитата:
Функция addslashes() часто применяется при записи в базу данных. Предположим, если нужно внести в базу данных имя O'reilly, то символ ' должен быть экранирован. В большинстве баз данных для этого используется \, строка будет выглядеть как O\'reilly. Заметьте, что сам символ \ в базу данных записан не будет. Если директива конфигурации magic_quotes_sybase имеет значение on, то символ ' будет экранироваться добавлением еще одного ' вместо \.
Выделенное - к вопросу о stripslashes при выводе данных из БД.
Наглядный пример на тему magic_quotes_sybase и отношения addslashes/stripslashes к этой настройке:
Код:
<?php
$x = '\\"\'';
ini_set('magic_quotes_sybase',0);
echo addslashes($x)."\n"; // printed \\\"\'
ini_set('magic_quotes_sybase',1);
echo addslashes($x)."\n"; // printed \"''
?>

Цитата:
вы можете только ссылками кидаться
А надо что-то ещё? Кому надо - сам прочтёт и осмыслит. Не поймёт - спросит. А терять время на того, кому оно не надо, или на цитирование мануала (а это в итоге плохо сказывается на мане из-за поисковиков)/известных истин - мне не интересно, хоть я и сделал ради вас такое исключение.
PS: mysql_real_escape_string - тоже функция PHP. Однако она является приблудой MySQL'я. Надеюсь, аналогия понятна?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 20:05 11-01-2005 | Исправлено: SiMM, 20:11 11-01-2005
alexhemp



упал с пальмы
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kommersant
Не путайте теплое с мягким.  
 
Одно дело экранировать управляющие символы SQL-сервера при записи в базу (в данном случае - кавычки)
 
Это в случае MySQL/PHP лучше всего делать mysql_real_escape_string().
В базе тогда появится ровно то, что ввел пользователь, и никаких SQL Injection не получится в принципе, что-бы там не было в данных.
 
Далее - данные попали в базу. Там может быть все что угодно, даже HTML теги
Ведь они могут использоваться не только в HTML а например в URL или еще где (в JavaScript например или вообще не в Web).
 
Поэтому экранировать управляющие символы для данных из базы нужно при выводе, а как это делать - зависит от того, что выводим.
 
В случае HTML - это будет htmlspecialchars(). В случае URL - urlencode() и т.п. - все зависит от того, КУДА вы выводите. Может это PDF или WML.
 
Так что все зависит от задачи.
 
Общее только одно
 
1. Для защиты от SQL Инекций нужно экранировать управляющие символы SQL сервера
2. При выводе - нужно экранировать управляющие символы того формата в который выводите. Ясно, что для разных форматов разные управляющие символы.
 
Насчет magic_quotes_sybase - вы сначала детальнее разберитесь о чем идет речь. Это возможности автоматического экранирования. Те кто знают как они работают - используют их или отключают. включение magic_quotes_gpc и magic_quotes_sybase  одновременно в случае если используется MySQL - вообще-то ошибка конфигурирования сервера.

Всего записей: 1945 | Зарегистр. 13-12-2001 | Отправлено: 16:03 13-01-2005 | Исправлено: alexhemp, 16:06 13-01-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Насчет magic_quotes_sybase - вы сначала детальнее разберитесь о чем идет речь. Это возможности автоматического экранирования. Те кто знают как они работают - используют их или отключают. включение magic_quotes_gpc и magic_quotes_sybase  одновременно в случае если используется MySQL - вообще-то ошибка конфигурирования сервера.
Я согласен с тем, что несколько перегнул палку. Всё, что я хотел - обратить внимание на существование magic_quotes_sybase (дабы люди понимали, откуда у них могут расти проблемы и где могут быть потенциальные дыры) и на то, что более правильно использовать специальнопредназначенную mysql_real_escape_string (это сулит гораздо меньше проблем) - addslashes в любом случае не будет корректной при работе с мультибайтными кодировками (разве что с UTF-8 безразлично, использовать mysql_escape_string или mysql_real_escape_string).

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:49 13-01-2005
mihailkogemyaka

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Смотрите [url=http://www.prostosem.in.ua/article/zamena-simvolov-perevoda-stroki-tegom-br]Замена символов перевода на новую строку тегом br[/url], там есть решения по замене переводов строк на PHP




Если не прекратите спамить - получите бан /Cheery/

Всего записей: 3 | Зарегистр. 06-01-2014 | Отправлено: 22:45 06-01-2014 | Исправлено: Cheery, 22:47 06-01-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FasaGasa

Код:
$_POST["message"] = htmlentities($_POST["message"], ENT_QUOTES, "UTF-8"); - преобразовываем все "плохие" символы (рекомендуем)
$_POST["message"] = str_replace("\n", "<br/>", $_POST["message"]); //перенос строки
$_POST["message"] = str_replace("\r", "", $_POST["message"]); //не помню что... но нужно
$_POST["message"] = trim(preg_replace("/\s+/u"," ", $_POST["message"])); // уборка лишних пробелов.

 
$_POST["message"] - имя нашего textarea
 

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:37 07-01-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: textarea + БД и перенос строки


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru