|
|
|
| Я понимаю, что я наверное уже надоел нубовскими вопросами, также понимаю, что лучше бы вначале прочитать весь учебник про php, но не терпится что-то написать, поэтому я задам еще 1 вопрос:
Пользователь ввел некую строку, она отправилась в теле запроса и попала в переменную $stroka. Как проверить, что там содержатся только разрешенные символы?
P.S. разрешенные символы это a-z A-Z а-я А-Я 0-9 - _ . ~ ! @ ^ ( ) и все, другие нельзя. И наскока безопасно разрешать вводить эти символы, если строчка с ними идет в тебо MySQL-запроса? | |
|
|
|
|
|
|
|
|
для: victoor
(31.08.2006 в 02:16)
| | Проверка осуществляется с помощью регулярных выражений.
Напокататься регулярка вот: /[a-Zа-Я0-9\-_\.~!@^()]+/i
Надо только посмотреть, нужно ли экранировать точку.
По безопасности. В наше время нигде нельзя чувствовать себя в безопасности. | |
|
|
|
|
|
|
|
для: HASHCODE
(31.08.2006 в 02:31)
| | Круглые скобки, крышечку и восклицательный знак тоже экранировать надо. Перед тем как делать запрос к БД лучше обработать входные данные функцией mysql_escape_string().
<?php
if ( preg_match("/[a-zа-я-_~@\!\^\(\)\.\d]+/i", $string ) {
$string = mysql_escape_string($string);
$q = "INSERT INTO table VALUES '$string';";
$query = mysql_query($q);
if ( $query ) {
print "Данные записаны в базу";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Саня
(31.08.2006 в 03:36)
| | попробывал скрипт
<?
$string="ё";
if(preg_match("/[^a-zа-я0-9-_~@\!\^\(\)\.\d]+/i", $string))
{
echo('запрещенные символы Есть!<br>'.$string.'|<br>'.mysql_escape_string($string).'|');
}
else
{
echo('запрещенных символов НЕТ!<br>'.$string.'|<br>'.mysql_escape_string($string).'|');
}
?>
|
почему-то все русские буквы идут по ветке else, и только буква ё заставляет идти по ветке true
Почему так и как исправить рег. выражение, чтобы оно коректно работало.
Проблема только в букве ё, все остальное работает так, как мне надо. | |
|
|
|
|
|
|
|
для: victoor
(02.09.2006 в 00:53)
| | Нужно отрицание перед preg_match() и добавьте ё - эта буква не входит в диапазон а-я
<?
$string="ё";
if(!preg_match("/[^a-zа-яё0-9-_~@\!\^\(\)\.\d]+/i", $string))
{
echo('запрещенные символы Есть!<br>'.$string.'|<br>'.mysql_escape_string($string).'|');
}
else
{
echo('запрещенных символов НЕТ!<br>'.$string.'|<br>'.mysql_escape_string($string).'|');
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.09.2006 в 12:13)
| | спасибо, заработало.
P.S. при таких подписях все же ненадо отрицание перед preg_match()
(в самом рег выражении есть отрицание ^) | |
|
|
|