Привет всем есть ли такое рег выражение которое не пропустит лишнее в запрос а оставит только A-z и _ и 0-9 спасибо
Code: htmlspecialchars() Не нашли? Я подскажу. Введите, например, в поле "имя" двойную кавычку и какой-нибудь текст, например, "123. Отправьте форму, и взгляните на исходный код полученной страницы. В четвертой строке будет что-то наподобие: Введите Ваше имя: <input type="text" name="name" value=""123"> То есть - ничего хорошего. А если бы хитрый пользователь ввел JavaScript-код? Для решения этой проблемы необходимо воспользоваться функцией htmlspecialchars(), которая заменит служебные символы на их HTML-представление (например, кавычку - на "): 1. <html> 2. <body> 3. <? 4. $name = isset($_POST['name']) ? htmlspecialchars($_POST['name']) : ''; 5. $year = isset($_POST['year']) ? htmlspecialchars($_POST['year']) : ''; 6. 7. if (isset($_POST['name'], $_POST['year'])) { 8. if ($_POST['name'] == '') { 9. echo 'Укажите имя!<br>'; 10. } else if ($_POST['year'] < 1900 || $_POST['year'] > 2004) { 11. echo 'Укажите год рождения! Допустимый диапазон значений: 1900..2004<br>'; 12. } else { 13. echo 'Здравствуйте, ' . $name . '!<br>'; 14. $age = 2004 - $_POST['year']; 15. echo 'Вам ' . $age . ' лет<br>'; 16. } 17. echo '<hr>'; 18. } 19. ?> 20. <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 21. Введите Ваше имя: <input type="text" name="name" value="<?=$name?>"> 22. <br> 23. Введите Ваш год рождения: <input type="text" name="year" value="<?=$year?>"> 24. <input type="submit" value="OK"> 25. </form> 26. </body> 27. </html> Повторите опыт и убедитесь, что теперь HTML-код корректен. Запомните - функцию htmlspecialchars() необходимо использовать всегда, когда выводится содержимое переменной, в которой могут присутствовать спецсимволы HTML. оно?
PHP: <? if (isset($_GET['param'])) { preg_match_all('/[a-z0-9_]+/iU', $_GET['param'], $out); echo "<PRE>"; print_r($out); echo "</PRE>"; } ?>
О то что надо это можно пременить для безопасности запросов в Sql? или можно всётаки обойти проверку ?
$some_str = 'mda\''; http://ru2.php.net/manual/ru/reference.pcre.pattern.modifiers.php для жирного ^([a-z0-9_])$
ENT_QUOTES вообще достаточно просто данные в помощью mysql_escape_string или mysql_real_escape_string экранировать. другое лишнее.