PHP: //Если нажата кнопка registration (зарегистрироваться) if (isset($registration)) { //Если поле "Ваше имя" правильно заполненное if (isset($user) && !empty($user) && preg_match("/^[а-яА-Яa-zA-Z0-9]{3,50}$/",$user)) { trim($user); $user = stripslashes($user); $user = htmlspecialchars($user); $user = addslashes($user); $user = mysql_real_escape_string($user); } else { if (strlen($user)== "0" || empty($user)) {$error1 = "Заполните поле: \"Ваше имя\".";} if (!preg_match("/^[а-яА-Яa-zA-Z0-9]{3,50}$/",$user)) {$error1 = "Ваше имя должно быть не меньше 3 символов (букв или цифр).";} } Весь прикол заключаэться втом, что когда ввожу 2 буквы на анг. выводит ошибку "Ваше имя должно быть не меньше 3 символов (букв или цифр)", но когда начина вводить русские буквы, например "ва" и т.д. ошибки почему то нет, то есть это : PHP: !preg_match("/^[а-яА-Яa-zA-Z0-9]{3,50}$/",$user) не срабатывает как следует. Прикол еще в том что вводя некоторые другие 2 буквы на рус. ошибка выскакивает. Короче раз через раз ошибка, и не знаю почему так!!! Кто знает?
trim($user); $user = stripslashes($user); $user = htmlspecialchars($user); $user = addslashes($user); $user = mysql_real_escape_string($user); уж очень дико)
Неверно, надо Код (Text): $user = trim($user); Спецсимволы будут экранироваться дважды, что тоже неверно (вместо \' получится \\\') А по вопросу - скорее всего кодировка данных, которые приходят к тебе, двухбайтная (utf-8). Там на один русскоязычный символ приходится 2 байта, и php может считать, что там не одна буква, а две. Попробуй написать: Код (Text): preg_match("/^[а-яА-Яa-zA-Z0-9]{3,50}$/u", $user) Сам код тоже сохрани в utf-8 (без BOM).
Код (Text): preg_match("/^[а-яА-Яa-zA-Z0-9]{3,50}$/u", $user) + Убрал "BOM" - кажется помогло! Спасибо большое, учителя!!!!
Подскажи, пожалуйста, если не лень, как правильно сделать проверку на введенные символы. так и выводятся. $user = trim(htmlspecialchars($user));? stripslashes($user) addslashes($user); mysql_real_escape_string($user); - с этими что делать? или их не надо?
PHP: <?php // ... if(get_magic_quotes_gpc()) $user = stripslashes($user); $user = mysql_real_escape_string($user); // ... ?> addslashes() лишнее. Или наоборот, оставить только addslashes(), а mysql_real_escape_string() убрать. Но лучше убрать addslashes(). Ну да. Только я бы сохранял в б.д. строку без htmlspecialchars(), а применял бы эту функцию уже потом, при отображении строки (при выводе из б.д.) Ты имеешь в виду регулярку? Ну нормально сейчас вроде. Зависит от цели. А вообще я не вижу особого смысла в подобном - ну если хочет пользователь, чтобы на сайте его звали ^%$#&&`12-* - ну и пусть, его дело. Если он захочет ввести лабуду - он введёт её и из букв (какое-нибудь reF4HjjK12ewA)