Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="DeeperMD"]На первый взгляд бредовый результат.. Включи debug 2 и посмотри какой запрос уходит в базу, на которые он отвечает что такая запись есть. У меня лично не было такого..[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
kondrat
Добавлено: 14 Май 2008 12:02:27
Заголовок сообщения:
Если кому интересно, я по этому поводу сделел тикет (кривенько правда, но меня поправили)
https://trac.cakephp.org/ticket/4589
Думаю, что про это теперь можно забыть.
Vlad
Добавлено: 09 Май 2008 00:26:29
Заголовок сообщения:
Если в изначальном примере вводить цифры, то запрос идёт
= 99
Если вводить 99r
то запрос будет
... = '99r'
Если цифры на входе - нет кавычек в запросе. Отсюда и "элемент в базе присутствует уже".
nws
Добавлено: 07 Май 2008 23:47:22
Заголовок сообщения:
Попробуй это
Код:
function register()
{
$this->set('username_error', false);
if (!empty($this->data)) {
if ($this->User->validates($this->data)) {
if ($this->User->findByUsername($this->data['User']['username'])) {
$this->User->invalidate('username');
$this->set('username_error', __('User already exist', true));
} else {
$this->data['User']['password'] = $this->data['User']['password'];
$this->User->save($this->data);
$this->Session->write('user', $this->data['User']['username']);
$this->redirect('somewhere');
}
} else {
$this->validateErrors($this->User);
}
}
}
Код:
<form action="<?php echo $html->url('/users/register'); ?>" method="post">
<table>
<tr>
<td colspan="2"><h2><?echo __('Register', true)?></td>
</tr>
<tr>
<td>
<label for="username"><?echo __('Login', true)?>:</label>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" name=data[User][username] />
<?
if ($username_error){
echo $username_error;
}else{
echo $form->error('User/username');
}
?>
</td>
</tr>
<tr>
<td><label for="password"><?echo __('Password', true)?>:</label></td>
</tr>
<tr>
<td>
<input type="password" size="20" name=data[User][password] />
<?echo $form->error('User/password');?>
</td>
</tr>
<tr>
<td>
<label for="email">E-mail:</label>
</td>
</tr>
<tr>
<td>
<input type="text" size="20" name=data[User][email] />
<?echo $form->error('User/email');?>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="<?echo __('GO', true)?>" /></td>
</tr>
</table>
</form>
DeeperMD
Добавлено: 07 Май 2008 22:25:13
Заголовок сообщения:
ну значит это не проблема Пирожка.. а MySQL походу
Если Пирожок в запрос вставляет то что вы указали то он здесь непричем.
Kondrat
Добавлено: 07 Май 2008 22:18:12
Заголовок сообщения:
999 берется, потому что я ввожу '999'.
мне кажется вы не совсем поняли.
я хочу такой логин: '999'. число это мое любимое скажем. Оно и идет в модель без проблем, но оно integr, а не string несмотря ни на что.
Но до меня другой человек зарегился как '999иван'. это string.
И тут cake вместо того, чтобы создать запись с username '999'. сравнивает с '999' c '999иван', приводит типы и говорит, что такой уже есть.
если порядок обратный, '999иван' c '999' то трабла нет.
На всех сайтах, где я попробовал зарегистр эта проблема есть.
DeeperMD
Добавлено: 07 Май 2008 21:25:52
Заголовок сообщения:
интересно откуда береться 999..
это невозможно.. посморите.. где-то баг.. отследите переменную от ввода до подачи запроса в модель Пирожка.. Дуумаю там меняется значение до ввода в запрос.
Гость
Добавлено: 07 Май 2008 20:29:31
Заголовок сообщения:
nws
Цитата:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(40) collate utf8_unicode_ci NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL,
`email` varchar(255) collate utf8_unicode_ci NOT NULL,
`last_login` datetime NOT NULL,
`is_moder` tinyint(4) NOT NULL default '0',
`is_admin` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
естественно, на UNIQUE KEY внимание обрати. убери email оттуда.
Kondrat
Добавлено: 07 Май 2008 20:16:20
Заголовок сообщения:
debug конечно цифру показывает. '999'. эту цифру находит в записи с такой же цифрой '999пример' , которая до того уже была.
если вначале записать цифру , а потом цифру с буквой, то все ок.
Kondrat
Добавлено: 07 Май 2008 20:09:30
Заголовок сообщения:
http://scratch.mit.edu/signup
к примеру щас попробовал, тоже самое.
Как у вас работает?
мой кусок кода тоже баг показывает.
DeeperMD
Добавлено: 07 Май 2008 20:08:43
Заголовок сообщения:
Debug проверили?
Igor-san
Добавлено: 07 Май 2008 19:49:57
Заголовок сообщения:
Я решил сразу начать с 1.2.0.6311 beta, правда, пришлось помучаться пока изучал статьи на IBM.com, но так лучше учится.
DeeperMD
Добавлено: 07 Май 2008 19:30:48
Заголовок сообщения:
Какую версию используете?
Igor-san
Добавлено: 07 Май 2008 19:28:10
Заголовок сообщения:
Что-то похожее и у меня, пока изучаю пекарню, и убрал проверку на валидность email. Так вот, есть допустим юзер 123 с емайлом
123@test.ru
Завожу юзера 345 с емайлом 123, и Саке выдает, что такой юзер уже есть. Пока допер,откуда ноги растут, ну в реальной ситуации с проверкой валидности это не страшно. Но, видно и с именем такая же петрушка. Вывод - писать собственную проверку.
DeeperMD
Добавлено: 07 Май 2008 19:28:07
Заголовок сообщения:
На первый взгляд бредовый результат..
Включи debug 2 и посмотри какой запрос уходит в базу, на которые он отвечает что такая запись есть.
У меня лично не было такого..
nws
Добавлено: 07 Май 2008 19:25:45
Заголовок сообщения:
Цитата:
к примеру хочу зарегистрироваться.
1. выбираю ник 007agent.
2 Регистрируюсь.
3. другой юзер хочет ник 007.
4 регистрируется. Получает message, что такой уже есть.
У меня все регистрирует, это ты что-то забуровил...
Вот мой дамп таблицы
Цитата:
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(40) collate utf8_unicode_ci NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL,
`email` varchar(255) collate utf8_unicode_ci NOT NULL,
`last_login` datetime NOT NULL,
`is_moder` tinyint(4) NOT NULL default '0',
`is_admin` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».