PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (9): « 1 2 3 4 5 6 7 [8] 9 »

> Найдено сообщений: 129
T1grOK Отправлено: 01 Декабря, 2013 - 22:07:19 • Тема: Нет скролла в Frame • Форум: HTML, Дизайн & CSS

Ответов: 2
Просмотров: 882
А где body?
T1grOK Отправлено: 30 Ноября, 2013 - 19:41:20 • Тема: Не могу придумать как составить запрос • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 27
Что-то намудрили. Если правильно понял, то должно быть, как то так:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT table_catalog_to_property.id_parametr FROM table_catalog_to_property
  2. LEFT JOIN (
  3. SELECT id_parametr FROM table_catalog_to_property WHERE id_catalog=:to_catalog
  4. ) AS temp_property  ON table_catalog_to_property.id_parametr = temp_property.id_parametr
  5. WHERE table_catalog_to_property.id_catalog = :id_category AND temp_property.id_parametr IS NULL
T1grOK Отправлено: 24 Ноября, 2013 - 20:53:38 • Тема: получение данных библиотекой • Форум: Вопросы новичков

Ответов: 1
Просмотров: 102
PHP:
скопировать код в буфер обмена
  1. public function template_article($path_to_page,$data,$pagination=NULL)
T1grOK Отправлено: 17 Ноября, 2013 - 22:08:11 • Тема: Дополнительная информация о пользователе • Форум: Вопросы новичков

Ответов: 4
Просмотров: 237
CURL + PROXY и можно делать сотни обращений в секунду, хоть из всех стран мира.
T1grOK Отправлено: 17 Ноября, 2013 - 20:54:05 • Тема: Kohana Model_Auth_User • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 1605
Найдено в Kohana 3.3.1 (в предыдущих версиях не проверял).
Модель User как правило расширяется Model_Auth_User.
Для создания пользователя или изменения его данных необходимо использовать исключительно методы create_user и update_user или передавать extra_validation.
Объясню почему.

Есть у нас модель User следующего содержания:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Model_User extends Model_Auth_Users{}
  3.  

В общем то пустая модель. И теперь пытаемся из контроллера, скажем обновить данные пользователя, через метод save класса ORM.
PHP:
скопировать код в буфер обмена
  1.  
  2.   public function action_edit(){
  3.         $id = (int)$this->request->param('id');
  4.         $user = ORM::factory('user', $id);
  5.         if(!$user->loaded()){
  6.             // Ошибка
  7.         }
  8.        
  9.         if($this->request->method() == Request::POST){
  10.               $user->values($this->request->post('user'));
  11.               try{
  12.                   $user->save();  
  13.               }catch (ORM_Validation_Exception $e){
  14.                   $errors = $e->errors('validation');
  15.               }
  16.         }
  17.   }
  18.  

Данный код спокойно отработает, если password(пароль) будет пуст. Но если мы заглянем в Model_Auth_User, то увидим следующие правила
PHP:
скопировать код в буфер обмена
  1. public function rules() {
  2.         return array(
  3.                 'username' => array(
  4.                         array('not_empty'),
  5.                         array('max_length', array(':value', 32)),
  6.                         array(array($this, 'unique'), array('username', ':value')),
  7.                 ),
  8.                 'password' => array(
  9.                         array('not_empty'),
  10.                 ),
  11.                 'email' => array(
  12.                         array('not_empty'),
  13.                         array('email'),
  14.                         array(array($this, 'unique'), array('email', ':value')),
  15.                 ),
  16.         );
  17. }

Здесь мы видим обратное. Пароль должен быть непустым. Забиваем на это и переопределяем этот метод в модели User добавив следующие правила.
PHP:
скопировать код в буфер обмена
  1. class Model_User extends Model_Auth_User{
  2. public function rules() {
  3.         return array(
  4.                 'username' => array(
  5.                         array('not_empty'),
  6.                         array('max_length', array(':value', 32)),
  7.                         array(array($this, 'unique'), array('username', ':value')),
  8.                 ),
  9.                 'password' => array(
  10.                         array('not_empty'),
  11.                         array('min_length', array(':value', 10))
  12.                 ),
  13.                 'email' => array(
  14.                         array('not_empty'),
  15.                         array('email'),
  16.                         array(array($this, 'unique'), array('email', ':value')),
  17.                 ),
  18.         );
  19. }
  20. }

Здесь для пароля добавлено еще одно правило - минимальная длинна 10 символов.
Снова пробуем сохранить данные пользователя с пустым паролем - проходит, вводим пароль 3 символа - проходит, 5 символов проходит. И никакого намека на ошибки.
Идем дальше.

В каком же порядке выполняется процесс валидации в Kohana?!
Сначала выполняются фильтры, а потом совершается непосредственно валидация полей.

Опять идем в Model_Auth_User видим фильтр на поле пароля:
PHP:
скопировать код в буфер обмена
  1. public function filters(){
  2.         return array(
  3.                 'password' => array(
  4.                         array(array(Auth::instance(), 'hash'))
  5.                 )
  6.         );
  7. }

Вот здесь то зарыта собака! Фильтр хеширования выполняется до выполнения правил rules и для пустого или нет пароля возвращается хеш довольно большого размера(зависит от используемого метода хеширования). И соответственно поле окажется непустым и длина его будет достаточной чтобы пройти лимит min_length.

Вывод. Полностью доверять стандартной Model_Auth_User не стоит сохранять данные пользователя стоит через create_user и update_user, подставлять для пароля extra_validation или создать свои способы /методы, которые будут правильно решать данную задачу(например добавить правило, !последним! для поля, именно в rules, который будет выполнять хэш-преобразование).
T1grOK Отправлено: 17 Ноября, 2013 - 11:01:47 • Тема: select Postgre • Форум: Работа с СУБД

Ответов: 1
Просмотров: 742
СУБД сортирует записи(если несколько одинаковых значений в сортируемом поле) в "псевдорандомном" порядке. И это относится не только к Postgresql. Ставьте уточняющую сортировку.
Например
CODE (SQL):
скопировать код в буфер обмена
  1. ORDER BY datetime ASC, id
T1grOK Отправлено: 13 Ноября, 2013 - 21:53:09 • Тема: Рекурсивная функция для карты сайта • Форум: Напишите за меня, пожалуйста

Ответов: 16
Просмотров: 144
Хм...Зачем рекурсия, есть же Nested Sets.
T1grOK Отправлено: 08 Ноября, 2013 - 20:07:56 • Тема: Перенаправление между страницами в crontab • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 66
Так для crontab установите необходимый период запуска, а данные о limit храните в файле или БД.
T1grOK Отправлено: 05 Ноября, 2013 - 21:32:13 • Тема: Как правильно организовать БД? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 297
Правильно. Правильно мыслите.
T1grOK Отправлено: 03 Ноября, 2013 - 14:56:00 • Тема: Изменение языка без перезагрузки страницы • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 3658
OrmaJever пишет:
По событию onchage на селекте отправляете ajax запрос с названием языка, php скрипт возвращает массив json...

Или в крайнем случае запросить у сервера эту же страницу в новой локализации, преимущество - простота реализации, недостаток - будут сброшены все пользовательские изменения на странице.
T1grOK Отправлено: 01 Ноября, 2013 - 10:31:14 • Тема: Распознавание капчи • Форум: Графика в PHP

Ответов: 6
Просмотров: 9464
Если под win, то можно заюзать тот же FineRader. Все остальные OCR, распознают то криво, то косо.
T1grOK Отправлено: 31 Октября, 2013 - 18:34:23 • Тема: Kohana Minion • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 1079
Есть в Kohana 3.3.1 в bootstrap.php функция mb_substitute_character, которая при работе в CLI режиме не работает и вызывает, ошибку мол такая функция не найдена.
Это как то решается? Или это баг Kohana?
P.S. И если это не баг, то каково конструктивное решение, а не взять закомментировать Улыбка
(Добавление)
Проблема решена. Для CLI режима не было подключено расширение mb.!!!
T1grOK Отправлено: 31 Октября, 2013 - 13:11:19 • Тема: eval • Форум: Вопросы новичков

Ответов: 9
Просмотров: 332
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<div>";
  3. print_r($array);
  4. echo "</div>";
  5.  

и зачем тут eval...
T1grOK Отправлено: 31 Октября, 2013 - 13:06:05 • Тема: phpStorm + Youtrack • Форум: Программное обеспечение

Ответов: 0
Просмотров: 1294
Кто работал со связкой phpStorm + Youtrack подскажите как через IDE можно закрыть задачу в YouTrack? Читаю доку по phpStorm и пока не наблюдаю такого.
T1grOK Отправлено: 17 Августа, 2013 - 11:20:59 • Тема: Работа функции array_diff() • Форум: Вопросы новичков

Ответов: 2
Просмотров: 110
Нет. array_diff возвращает элементы из первого массива, которые отсутствуют в остальных.

Страниц (9): « 1 2 3 4 5 6 7 [8] 9 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB