Подскажите как правильно заэкранирование выводимые данные из БД. В базе у меня могут хранится теги или например <!--текст-->, что не выводится, потому что комментарий. Код (Text): for ($i=1; $i<$n+1; $i++) { $sql_data = mysql_fetch_array($row1); echo "<b>Вопрос № ".$record.": </b>"; echo $sql_data['question']."<br />"; echo "<b><u>Правильный ответ:</u></b> 1) ".$sql_data['r_answer']."<br />"; echo "2) ".$sql_data['w_answer1']."<br />"; echo "3) ".$sql_data['w_answer2']."<br />"; echo "4) ".$sql_data['w_answer3']."<br />"; echo "5) ".$sql_data['w_answer4']."<br />"; echo "<br />"; $record=$record+1; } Если нетрудно какую функцию и как использовать примером. Спасибо
для бд юзается бд-экранирование а не хтмлспешалчарс http://www.php.ru/manual/function.mysql-real-escape-string.html например
Несовсем поняла как её вставлять в запрос: Код (Text): $query2 = "SELECT mysql_real_escape_string('question'), mysql_real_escape_string('r_answer'), mysql_real_escape_string('w_answer1'), mysql_real_escape_string('w_answer2'), mysql_real_escape_string('w_answer3'), mysql_real_escape_string('w_answer4') FROM `test` LIMIT ".$records.", $N"; Так не работает)
Да мне пример нужен именно на запросе, а то я непонимаю-_- я уже так попробовала: Код (Text): $query2 = "SELECT `question` as quest, `r_answer` as r_an, `w_answer1` as w_an1, `w_answer2` as w_an2, `w_answer3` as w_an3, `w_answer4 as w_an4 FROM `test` LIMIT ".$records.", $N, mysql_real_escape_string($quest), mysql_real_escape_string($r_an), mysql_real_escape_string($w_an1), mysql_real_escape_string($w_an2), mysql_real_escape_string($w_an3), mysql_real_escape_string($w_an4)"; Оно просто не работает ошибку выдает что чето с аргументами, может нетуда ставлю, но по тем примерам немогу понять как работает-_-
Объясни ещё раз, чего хочешь добиться? Чтобы если в базе данных есть html-теги - они печатались на экране в браузере, а не выполнялись им как команды? Или я неправильно понял вопрос?
для экранирования вводимых в базу данных (чтобы в данных одиночная кавычка не проскочила — причина sql-injection) применяют mysql_real_escape_string Код (PHP): $s = mysql_real_escape_string($fld); $sql = "insert into x(fld) values('{$s}')"; // скажи коварным кавычкам нет! для экранирования выводимых на страницу данных (для нейтрализации тегов html) применяют htmlspecialchars Код (PHP): echo '<img alt="' . htmlspecialchars($fld, ENT_QUOTES, 'UTF-8') . '" src="blablabla" />'; // здесь мы страхуемся от тегов и от кавычек
Да, именно так и нужно. А можно это на примере запроса вывода из базы, а то я не совсем понимаю куда именно эту функцию ставить(
Эту функцию применять при выводе данных в браузер Код (PHP): $res = mysql_query('SELECT `name`, `city` FROM `users`'); if($res and mysql_num_rows($res) > 0) { while($row = mysql_fetch_assoc($res)) { echo('Имя: ' . htmlspecialchars($row['name']) . ', город: ' . htmlspecialchars($row['city'])); } }