2016-02-03 3 views
0

В Открытая корзина версия 2.1.0.2, когда клиент нажимает ссылку на забытый пароль и вводит его/ее электронную почту, на их адрес электронной почты будет отправлен новый пароль.Сброс пароля клиента Opencart

Как изменить это

Когда клиенты нажмите ссылку забыли пароль и вводят его/ее электронную почту, ссылка будет отправлена ​​на свой адрес электронной почты, и они могут нажать на ссылку и изменить пароль там?

Я понял, как сбрасывается пароль администратора, как я хотел, но не знаю, как именно его реализовать. Есть идеи ?

Thank you.

+0

Вам нужно будет внести немало изменений. –

ответ

0

Вам необходимо сделать некоторые изменения в следующем расширении.

http://www.opencart.com/index.php?route=extension/extension/info&extension_id=25484&filter_search=password&filter_license=0

После того, что он будет работать нормально.

Изменения указаны в vqmod/xml/customer_reset_pwd_link.ocmod.xml файла.

проверка со следующими ocmod XML

<?xml version="1.0" encoding="UTF-8"?> 
<modification> 
    <id>Customer Forgottten Password Email Verification</id> 
    <version>1.0.0</version> 
    <author>Amit Maurya</author> 
     <code>forgotten_password</code> 

    <file path="catalog/controller/account/forgotten.php"> 
    <operation> 
     <search><![CDATA[ 
      $password = substr(sha1(uniqid(mt_rand(), true)), 0, 10); 
      ]]> 
     </search> 
     <add position="replace" offset="8"> 
      <![CDATA[ 

      $this->model_account_customer->checkcolumn(); 

      $code = sha1(uniqid(mt_rand(), true)); 

      $this->model_account_customer->editCode($this->request->post['email'], $code); 

      $subject = sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')); 

      $message = sprintf($this->language->get('text_greeting'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')) . "\n\n"; 
      $message .= $this->language->get('text_change') . "\n\n"; 
      $message .= html_entity_decode($this->url->link('account/reset_pwd_link', 'code=' . $code, 'SSL')) . "\n\n"; 
      $message .= sprintf($this->language->get('text_ip'), $this->request->server['REMOTE_ADDR']) . "\n\n"; 
      ]]> 
     </add> 
    </operation> 
    </file> 

    <file path="catalog/model/account/customer.php"> 
    <operation> 
     <search><![CDATA[ 
      public function editPassword($email, $password) { 
     ]]> 
     </search> 
     <add position="before"> 
     <![CDATA[ 

       public function checkcolumn() { 
       $hasColumn= FALSE; 
       $result = $this->db->query("DESCRIBE `".DB_PREFIX."customer`;"); 
       foreach ($result->rows as $row) { 
       if ($row['Field'] == 'code') { 
        $hasColumn = TRUE; 
        break; 
       } 
       } 
       if (!$hasColumn) { 
       $sql = "ALTER TABLE `".DB_PREFIX."customer` ADD `code` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''"; 
       $this->db->query($sql); 
       } 
      } 

      public function editCode($email, $code) { 
      $this->db->query("UPDATE `" . DB_PREFIX . "customer` SET code = '" . $this->db->escape($code) . "' WHERE LCASE(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'"); 
      } 

      public function getUserByCode($code) { 
       $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "customer` WHERE code = '" . $this->db->escape($code) . "' AND code != ''"); 

       return $query->row; 
      } 

     ]]> 
     </add> 
    </operation> 
    </file> 

    <file path="catalog/language/english/mail/forgotten.php"> 
    <operation> 
     <search><![CDATA[ 
      $_['text_subject'] = '%s - New Password'; 
     ]]> 
     </search> 
     <add position="replace" offset="3"><![CDATA[ 
      $_['text_subject'] = '%s - Password reset request'; 
      $_['text_greeting'] = 'A new password was requested for %s .'; 
      $_['text_change'] = 'To reset your password click on the link below:'; 
      $_['text_ip']  = 'The IP used to make this request was: %s'; 
        ]]> 
     </add> 
    </operation> 
    </file> 



</modification> 

Примечание: использование ocmod

+0

@htgyut: проверить это ответы он будет работать –

+0

вы используете multistore? –

+0

Я не использую multistore – htgyut

0

выше модуль работает абсолютно нормально, но я хочу реализовать ниже функции в этом коде:

Link Expiration - Sent Link for Reset Password will expire after X hours for e.g: 24 hours the sent link expires. 

Я не очень хорошо знаю кодировку php. Как добавить эту функцию по коду в этом модуле?

Thanks

+1

Это не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав [Ask Question] (https://stackoverflow.com/questions/ask). Вы также можете [добавить щедрость] (https://stackoverflow.com/help/privileges/set-bounties), чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно [репутации] (https://stackoverflow.com/help/ Что-репутация). - [Из обзора] (/ review/low-quality-posts/18982310) – GGO

+1

Если у вас есть новый вопрос, обратитесь к нему, нажав кнопку [Ask Question] (https://stackoverflow.com/questions/ask). Включите ссылку на этот вопрос, если это поможет обеспечить контекст. - [Из обзора] (/ review/low-quality-posts/18982310) – Michel

+0

@btl Почему вы отредактировали этот пост? Это не ответ на вопрос, и поэтому его следует удалить. Отредактировав сообщение, вы выгнали его из очереди просмотра - ** [см. Здесь] (https://stackoverflow.com/review/low-quality-posts/18982310) **. Пожалуйста, отметьте сообщение как не-ответ, чтобы он мог быть повторно рассмотрен. Благодарю. – Pang