|
|
|
| если при проверки данных от пользователя используется конструкция типа:
$org_name=htmlspecialchars(trim($_POST['org_name']), ENT_QUOTES);
|
то нужно ли использовать еще и функцию AddSlashes()? | |
|
|
|
|
|
|
|
для: smorodin
(17.01.2007 в 13:34)
| | Смотря для чего. Если для вставки в БД, то достаточно: $org_name = addslashes(trim($_POST['org_name'])); | |
|
|
|
|
|
|
|
для: Sergey89
(17.01.2007 в 13:43)
| | и для впихивания в базу, и для отображения текстом, и для отображения в виде
<input type=text name=org_name value='".$org_name."'>
|
| |
|
|
|
|
|
|
|
для: smorodin
(17.01.2007 в 13:49)
| | тогда лучше так:
$value = addslashes(trim($_POST['value']));
"<input type=text name=org_name value="'.htmlspecialchars($value).'">"
|
| |
|
|
|
|
|
|
|
для: Sergey89
(17.01.2007 в 14:16)
| | сделал тестовую страницу test.php:
<html>
<?php
if(isset($_POST['text'])) {
$text=addslashes(trim($_POST['text']));
print "<form action=test.php method=post>
<input type=text name=text value='".htmlspecialchars($text)."'>
<input type=submit>
</form>";
}
else {
print "
<form action=test.php method=post>
<input type=text name=text>
<input type=submit>
</form>" ;
}
?>
</html>
|
если ввожу в поле символ <'> (одна черточка сверху :) ), то она теряется... :( | |
|
|
|
|
|
|
|
для: smorodin
(17.01.2007 в 14:22)
| | походу, htmlspecialchars($text, ENT_QUOTES) все равно надо использовать, чтобы ' преобразовывалось в '
вот только я не знаю, насколько опасно без addslashes в вопросе безопасности... :( | |
|
|
|
|
|
|
|
для: smorodin
(17.01.2007 в 14:26)
| | addslashes нужен только для вставки в БД. | |
|
|
|
|
|
|
|
для: Sergey89
(17.01.2007 в 14:28)
| | То есть как я понимаю, если перед вставкой в БД обработать переменную только функцией htmspesialchars() , то это может быть опасно? | |
|
|
|
|
|
|
|
для: golovdinov
(17.01.2007 в 15:32)
| | Вобще да. addslashes экранирует: \, ', ", NUL байт | |
|
|
|
|
|
|
|
для: golovdinov
(17.01.2007 в 15:32)
| | >То есть как я понимаю, если перед вставкой в БД обработать переменную только функцией htmspesialchars() , то это может быть опасно?
Обрабатывать htmlspecialchars( ) перед вставкой в базу данных не нужно, этой функцией обрабатываешь при выводе из БД. | |
|
|
|
|
|
|
|
для: Thrasher
(17.01.2007 в 15:55)
| | htmlspecialchars(addslashes($string));
2 Thrasher
htmlspecialchars -- Преобразует специальные символы в HTML сущности
В HTML некоторые символы имеют специальное значение и для сохранения своего значения должны быть преобразованы в HTML сущности. Эта функция возвращает строку, над которой проведены некоторые из таких преобразований
Производятся следующие преобразования:
'&' (амперсанд) преобразуется в '&'
'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '<'
'>' (знак "больше чем") преобразуется в '>' | |
|
|
|
|
|
|
|
для: mindless
(17.01.2007 в 16:34)
| | Ну так и я про то же.
Но делать эти преобразования нужно при выводе из базы, а не при вводе в нее.
В базе строка хранится в первоначальном виде. | |
|
|
|
|
|
|
|
для: Thrasher
(17.01.2007 в 18:00)
| | Thrasher, +1 | |
|
|
|
|
|
|
|
для: Thrasher
(17.01.2007 в 18:00)
| | а какая разница, когда нужно делать преобразования? :) | |
|
|
|
|
|
|
|
для: smorodin
(18.01.2007 в 09:20)
| | Разница есть. В базе надо хранить оригинал для того, чтобы его можно было легко редактировать. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 10:26)
| | ок, спасибо всем! | |
|
|
|