timpson78 2 Жалоба Опубликовано: December 5, 2014 Доброе время суток !!! Очень часто появляются ошибки интерфейса предлагаю их обсуждать в данной теме. Вот только что наткнулся: При регистрации выдает не удобоваримое сообщение для пользователя, что номер телефона уже такой есть в системе: Как исправить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timpson78 2 Жалоба Опубликовано: December 5, 2014 Вот еще после отправки формы регистрации - сообщает, что регистрация прошла успешно и при этом вам отправили сообщение на эл. почту для подтверждения регистрации. Где исправить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: December 5, 2014 Вот еще после отправки формы регистрации - сообщает, что регистрация прошла успешно и при этом вам отправили сообщение на эл. почту для подтверждения .регистрация и активация - разные вещи, всё верно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: December 5, 2014 Доброе время суток !!! Очень часто появляются ошибки интерфейса предлагаю их обсуждать в данной теме. Вот только что наткнулся: При регистрации выдает не удобоваримое сообщение для пользователя, что номер телефона уже такой есть в системе: Как исправить?В будущих версиях сделаем более понятную расшифровку для этого сообщения. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timpson78 2 Жалоба Опубликовано: December 5, 2014 В следующем обновлении еще что нибудь вылезет... А когда это обновление еще будет.. Лучше вы скажите, где это сейчас поправить... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: December 5, 2014 В следующем обновлении еще что нибудь вылезет... А когда это обновление еще будет.. Лучше вы скажите, где это сейчас поправить...Попробуйте.Это делается тут/apps/system/lib/admin/users/user_object_manager.php /** * Add data * @param array $form_data form data * @param int $language_id * @return boolean */ function add_data ( $form_data, $language_id = 0 ) { require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); $data_model = new Data_Model(); $query = $data_model->get_insert_query(DB_PREFIX.'_'.$this->table_name, $form_data, $language_id); //echo $query.'<br>'; $this->db->exec($query); if ( !$this->db->success ) { $this->riseError($this->db->error); return false; } $new_record_id = $this->db->last_insert_id(); if ( strlen($form_data['imgfile']['value']) > 0 ) { //$this->user_image_dir = $form_data['imgfile']['path']; //$this->user_image_dir='/img/data/user/'; $this->update_photo($new_record_id); } if ( $form_data['newpass']['value'] != '' ) { $this->editPassword($new_record_id, $form_data['newpass']['value']); } foreach ($form_data as $form_item){ if($form_item['type']=='uploads'){ $imgs_uploads = $this->appendUploads($this->table_name, $form_item, $this->primary_key, $new_record_id); $this->set_imgs($imgs_uploads); } } //echo "new_record_id = $new_record_id<br>"; //echo $query; return $new_record_id; }При выполнении вот этого кода $query = $data_model->get_insert_query(DB_PREFIX.'_'.$this->table_name, $form_data, $language_id); //echo $query.'<br>'; $this->db->exec($query); if ( !$this->db->success ) { $this->riseError($this->db->error); return false; }Вам нужно перехватить$this->db->errorИ расшифровать ее, если там есть ключевое слово Duplicate Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timpson78 2 Жалоба Опубликовано: December 5, 2014 спасибо!! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timpson78 2 Жалоба Опубликовано: December 8, 2014 Я сделал чуть по другому - исходя из логики вашего кода....Создал два метода для класса User_object_manager:/*** Check phone* @param string $mobile mobile* @return boolean* Add by Tim*/function checkPhone ( $mobile ) {$query = 'select count(*) as cid from '.DB_PREFIX.'_user where mobile=\''.$mobile.'\'';//echo $query;$this->db->exec($query);$this->db->fetch_assoc();if ( $this->db->row['cid'] > 0 ) {return false;}return true;}/*** Check diff phone not for this record id* @param string $mobile login * @param int $user_id* @return boolean* Add by Tim*/function checkDiffphone ( $mobile, $user_id ) {$query = 'select count(*) as cid from '.DB_PREFIX.'_user where mobile=\''.$mobile.'\' and user_id<>'.$user_id;//echo $query;$this->db->exec($query);$this->db->fetch_assoc();if ( $this->db->row['cid'] > 0 ) {return false;}return true;} Модифицировал метод этого же объекта /*** Check data* @param array $form_data* @return boolean* Edit by Tim. Check phone dublle entry.*/function check_data ( $form_data ) { require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); $data_model = new Data_Model(); if ( !empty($form_data['login']) ) { if ( $this->getRequestValue('do') != 'edit_done' ) { if ( !$this->checkLogin($form_data['login']['value']) ) { $this->riseError('Такой login уже зарегистрирован'); return false; } } else { if ( !$this->checkDiffLogin($form_data['login']['value'], $form_data['user_id']['value']) ) { $this->riseError('Такой login уже зарегистрирован'); return false; } } } else { if ( $this->getRequestValue('do') != 'edit_done' ) { if ( !$this->checkEmail($form_data['email']['value']) ) { $this->riseError('Такой email уже зарегистрирован'); return false; } if (!$this->checkPhone($form_data['mobile']['value'])){ $this->riseError('Такой телефон уже зарегистрирован'); return false; } } else { if ( !$this->checkDiffEmail($form_data['email']['value'], $form_data['user_id']['value']) ) { $this->riseError('Такой email уже зарегистрирован'); return false; } if (!$this->checkDiffphone($form_data['mobile']['value'], $form_data['user_id']['value'])){ $this->riseError('Такой телефон уже зарегистрирован'); return false; } } }..... И добавил проверку в метод check_data объекта register_using_model/*** Check data* @param array $form_data* @return boolean* Edit By Tim. Add check by mobile phone.*/function check_data ( $form_data ) { require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');$data_model = new Data_Model(); if ( $this->getRequestValue('do') != 'edit_done' ) {if ( !$this->checkEmail($form_data['email']['value']) ) {$this->riseError('Такой email уже зарегистрирован');return false;}if (!$this->checkPhone($form_data['mobile']['value'] )){$this->riseError('Такой телефон уже зарегистрирован');return false;} } else {if ( !$this->checkDiffEmail($form_data['email']['value'], $form_data['user_id']['value']) ) {$this->riseError('Такой email уже зарегистрирован');return false;}if (!$this->checkDiffphone($form_data['mobile']['value'], $form_data['user_id']['value']) ){ $this->riseError('Такой телефон уже зарегистрирован');return false;}}.... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах