Recommended Posts

Доброе время суток !!!

 

Очень часто появляются  ошибки интерфейса предлагаю их обсуждать в данной теме.

 

Вот только что наткнулся: При регистрации выдает не удобоваримое сообщение для пользователя, что номер телефона уже такой есть в системе: 

Как исправить?

post-2091-0-30134500-1417777626_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот еще после отправки формы регистрации - сообщает, что регистрация прошла успешно и при этом вам отправили сообщение на эл. почту для подтверждения регистрации.

 

Где исправить?

post-2091-0-34522100-1417777936_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот еще после отправки формы регистрации - сообщает, что регистрация прошла успешно и при этом вам отправили сообщение на эл. почту для подтверждения .

регистрация и активация - разные вещи, всё верно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброе время суток !!!

 

Очень часто появляются  ошибки интерфейса предлагаю их обсуждать в данной теме.

 

Вот только что наткнулся: При регистрации выдает не удобоваримое сообщение для пользователя, что номер телефона уже такой есть в системе: 

Как исправить?

В будущих версиях сделаем более понятную расшифровку для этого сообщения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В следующем обновлении еще что нибудь вылезет... А когда это обновление еще будет..  Лучше вы скажите, где это сейчас поправить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В следующем обновлении еще что нибудь вылезет... А когда это обновление еще будет..  Лучше вы скажите, где это сейчас поправить...

Попробуйте.

Это делается тут

/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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  Я сделал чуть по другому - исходя из логики вашего кода....

Создал два метода для класса 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;

}

}....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас