Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Гость
цитировать
|
Добавлено: 08 Дек 2008 17:15:41 Заголовок сообщения: Ввод русского логина |
|
|
Здравствуйте. Мне нужно было сделать регистрацию/авторизацию, делал по примеру, всё вроде нормально, но есть одна странность. У меня стоит проверка на число символов вводимого имени, от 4 до 40. Если ввожу английскими буквами, то всё работает нормально, но если ввожу русскими, то проверка не срабатывает, то есть можно ввести имя с 3, 2, 1 символами и регистрация проходит успешно. Кто-нибудь знает, почему так происходит? |
|
Вернуться к началу |
|
|
zeresesker
цитировать
Зарегистрирован: 07 Ноя 2008 19:35:32 Сообщения: 8
|
Добавлено: 08 Дек 2008 17:27:26 Заголовок сообщения: |
|
|
О какой авторизации и примерах идет речь?
Что с кодировками? |
|
Вернуться к началу |
|
|
Kondrat Гость цитировать
|
Добавлено: 08 Дек 2008 21:20:14 Заголовок сообщения: |
|
|
Нельзя использовать strlen. Надо проверять mb_strlen ( string $str [, string $encoding ] ). Я так думаю |
|
Вернуться к началу |
|
|
Гость
цитировать
|
Добавлено: 09 Дек 2008 08:26:39 Заголовок сообщения: |
|
|
Пример брал с http://www.ibm.com/developerworks/ru/edu/os-php-cake1/section3.html
Кодировка Utf8 и в phpMyAdmin тоже.
Проверка такая
var $validate = array('username' => '/^.{4,40}$/',
'password' => '/^.{6,40}$/',
'email' => VALID_EMAIL,
'first_name' => '/^.{1,40}$/',
'last_name' => '/^.{1,40}$/'); |
|
Вернуться к началу |
|
|
VolCh
цитировать
Зарегистрирован: 21 Окт 2007 07:17:33 Сообщения: 47 Откуда: Санкт-Петербург
|
Добавлено: 13 Дек 2008 13:29:17 Заголовок сообщения: |
|
|
Ошибка в том, что PCRE работает по умолчанию с однобайтовыми кодировками, надо или использовать в рекекспах модификатор u (например '/^.{4,40}$/u') или использовать встроенные в Кэйк правила minLenght и maxlenght. |
|
Вернуться к началу |
|
|
Vaho
цитировать
Зарегистрирован: 03 Дек 2008 10:36:09 Сообщения: 10
|
Добавлено: 13 Дек 2008 17:33:36 Заголовок сообщения: |
|
|
Спасибо за помощь (это я спрашивал Гостем)
Всё что я делал, делал в 1.1 когда перешёл на 1.2 проблема сама собой отпала |
|
Вернуться к началу |
|
|
Chikiro
цитировать
Зарегистрирован: 11 Дек 2008 09:00:06 Сообщения: 1
|
Добавлено: 17 Дек 2008 23:15:29 Заголовок сообщения: |
|
|
при использовании minLenght и maxlenght проблема с неправильным подсчетом количества символов остается.
подключение в bootstrap multibyte.php тоже не помогает, у меня 1.2 RC3
и тикет открытый висит: https://trac.cakephp.org/ticket/2218
кто как решает эту проблему?
использовать костыль rule => custom вместо length? |
|
Вернуться к началу |
|
|
kondrat Гость цитировать
|
Добавлено: 18 Дек 2008 11:57:44 Заголовок сообщения: |
|
|
Я уже написал:
Использую custom
Код: |
var $validate = array(
'username' => array(
'betweenRus' => array(
'rule' => array( 'betweenRus', 2, 15, 'username'),
'message' => 'От 2 до 15 букв'
),
|
и функцию:
Код: |
function betweenRus($data, $min, $max, $key) {
//debug($data);
$length = mb_strlen($data[$key], 'utf8');
if ($length >= $min && $length <= $max) {
return true;
} else {
return false;
}
}
|
|
|
Вернуться к началу |
|
|
|