[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Есть ли простой способ избавится от ' \' ?
SemenH8
Имеется форма ввода типа text. При обновлении страницы, происходит проверка введенного текста на запрещенные символы. Удалось написать функцию, которая проверяет введенный текст и возвращает false если обнаружен "запрещенный знак". Но вот проблема: обратный слеш удается удалить только вначале и в конце слова, а если его вписывают в середине - при обновлении страницы число \ растет...
Подскажите как решить эту проблему?



Спустя 16 минут, 38 секунд (16.02.2010 - 22:59) DedMorozzz написал(а):
экранируй слэш. Почитай про "экранацию"

Спустя 1 час, 35 минут, 15 секунд (17.02.2010 - 00:34) twin написал(а):
А какие символы запрещены? И кем?

Спустя 1 минута, 51 секунда (17.02.2010 - 00:36) DedMorozzz написал(а):
Походу прег матчем )) Программирование развивает телепатию.

Спустя 19 минут, 10 секунд (17.02.2010 - 00:55) SemenH8 написал(а):
Цитата (twin @ 16.02.2010 - 21:34)
А какие символы запрещены? И кем?

Мной запрещены, в частности вот этот - " \ " - например в поле ввода имени или пароля...
Ну, я не знаю, может никто не сталкивался с такой проблемой, может как-то по другому все делается... - тогда прошу подсказки...
Я делаю форму ввода типа text || password, если в поле ввести \, при обновлении страницы, их количество каждый раз удваивается - это не приятно, вот я и хочу запретить ввод этого символа (ну, и других, типа * / ? и т.п.)
Смотрел на счет экранирования, да, записать то его можно, но не помогает это... Например, по краям, я убираю \ с помощью вот такой конструкции:
trim($_REQUEST['user_name'], "\ ");

а вот в средине слова не получается... sad.gif

Спустя 4 минуты (17.02.2010 - 00:59) DedMorozzz написал(а):
эм...preg_match пробовал?

Спустя 24 минуты, 11 секунд (17.02.2010 - 01:23) SemenH8 написал(а):
Вот, спасибо smile.gif - отпробовал: работает, начиная с такого вида: "/\\\/"

Спустя 5 часов, 35 минут, 23 секунды (17.02.2010 - 06:59) twin написал(а):
Ну во первх, эта штука лезет у тебя из за включенных магических кавычек. Просто положи в корень сайта файл .htaccess вот такого содержания:
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off


Но я почему спросил - это не решит всех проблем. Если ты начал чего то запрещать не в плане модерации, а в плане безопасности, то дыры все равно останутся, а качество скрипта ухудшится на много. Вот это почитай.

Спустя 6 часов, 15 минут, 8 секунд (17.02.2010 - 13:14) SemenH8 написал(а):
Спасибо огромное, очень интересно и познавательно (правда понятно пока не все...) - общее представление получено.
Ну вот например, часть формы ввода имени пользователя:
if (preg_match("/\\\/", $user_name)==1) {$user_name="";}

и
<FORM METHOD=POST ACTION='...'>
<TABLE
border='0'>
<TR>
<TD
width='150' align='right'>Имя пользователя: *  </TD>
<TD><INPUT
TYPE='text' NAME='user_name' maxlength='16' value='$user_name' title='запрещенные знаки: \" / \ ? < > '></TD>
<TD>
{$ok_no1}</TD>
</TR>
</TABLE>

если пользователь вводит \, preg_match покажет 1 и произойдет присвоение $user_name пустой строки - т.е. поле ввода имени опять окажется пустым, иначе (если запрещенных символов нет) значение $user_name будет отображаться.
Запрещать начал в плане модерации - не хочется видеть имена типа <*>\bublik/<*> smile.gif

Спустя 6 минут, 35 секунд (17.02.2010 - 13:20) twin написал(а):
Ты не сможешь запретить все бяки, их тысячи.
Вот с этим как собираешься бороться?
עִבְרִית

Если в плане модерации, нужно разрешить то что можно, а остальное запретить.

Спустя 2 минуты, 51 секунда (17.02.2010 - 13:23) DedMorozzz написал(а):
открой для себя preg_replace, если хочешь заменять wink.gif
И Твин совершенно прав. Проще сделать диапазон допустимых символов, чем базу данных запрещённых. Иначе все символы типа : ˜ћ·™.......... надо "выписывать"

Спустя 55 минут, 52 секунды (17.02.2010 - 14:19) SemenH8 написал(а):
Ну вот, попробовал разрешить только буквы и цифры, но данная конструкция не работает:
if (!preg_match("/[a-z0-9а-я]/i", $user_name)) echo "STOP!!!"; else echo "OK!!!";

Я ее понимаю так: если preg_match находит символ не соответствующий "/[a-z0-9а-я]/i" - выдается 1 иначе 0 - или я не правильно понимаю? (скорее всего)

Спустя 34 минуты, 26 секунд (17.02.2010 - 14:53) DedMorozzz написал(а):
мм...у тя можно ввести только 1 символ. поставь + плсде закрытой квадратной скобки. Иль {1,100} это от 1го до 100 символов, а ещё лучше - почитай про регулярные выражения. Там много чего интересного

Спустя 16 минут, 32 секунды (17.02.2010 - 15:10) twin написал(а):
Так попробуй
if (!preg_match("/^[a-z0-9а-яё\s-]+$/i", $user_name)) echo "STOP!!!"; else echo "OK!!!";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.