Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте! хотел бы поинтересоваться, ктото уже реализовывал, или находил решения немного иной авторизации. Чтобы при входе в личный кабинет, вместо логина-email, был логин-телефон, ну или и то и то, как в ВК допустим.

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


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

А если использовать авторизацию через vk? Проще\дешевле\надежнее.

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


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

к сожалению через ВК неподходит, в силу того, что интеграции с соц сетями не будет. Если были какието такие решения уже, попадались вам, или просто куда копать? Определять телефон логином вместо имейла

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


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

"Копать" в форму авторизации и систему регистрации. А Вы куда копать собирались?  -_-

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


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

Не, ну это ясно) Я так понял, решений по данному вопросу не было

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


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

Хотелось бы поднять тему - также интересна задача.

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


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

А в чем проблема-то?

 

При авторизации проверять пару - телефон/пароль,  а не почта/пароль

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


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

Можно сделать так:

 

system/library/customer.php

 

ocstore 1.5.4.1

 

найти 

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

для использования варианта авторизации "телефон или email" заменить на

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

для использования авторизации по номеру телефона

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

Для ocstore 1.5.5.1 вместо strtolower используется utf8_strtolower, но в остальном все то же самое.

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
burr, все классно ( я как раз это и предлагал) , только...

Человек должен понимать всю ответственность за такие действия.

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


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

Можно сделать так:

 

system/library/customer.php

 

ocstore 1.5.4.1

 

найти 

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

для использования варианта авторизации "телефон или email" заменить на

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

для использования авторизации по номеру телефона

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

Для ocstore 1.5.5.1 вместо strtolower используется utf8_strtolower, но в остальном все то же самое.

Здравствуйте! Подскажите пожалуйста решение для версии 1.5.3.1

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


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

burr, все классно ( я как раз это и предлагал) , только...

Человек должен понимать всю ответственность за такие действия.

 

Думаю лучше сделать не телефон - пароль, а телефон и смс код, который будет приходить на введенный номер. Да, это повлечет расходы, но работает очень хорошо много где уже давно.

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


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

Думаю лучше сделать не телефон - пароль, а телефон и смс код, который будет приходить на введенный номер. Да, это повлечет расходы, но работает очень хорошо много где уже давно.

Тогда можно пускать просто по коду из отправляемого письма, а расходы переложить на плечи почтовика. Благо на них почти везде уже двухфакторная авторизация

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


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

Можно сделать так:

 

system/library/customer.php

 

ocstore 1.5.4.1

 

найти 

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}
для использования варианта авторизации "телефон или email" заменить на

if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

При использовании такого метода на OpenCart 1.5.6.4 позволяет авторизоваться с любым абсолютно паролем, главное знать email покупателя.

Подскажите пожалуйста верное решение.

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


Ссылка на сообщение
Поделиться на другие сайты
if ($override) {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where telephone = '" . $this->db->escape(strtolower($email)) . "' AND status = '1'");
} else {
  $customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE telephone = '" . $this->db->escape(strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

А при таком способе не работает авторизация за покупателя через меню Админка - Продажи - Покупатели.

Подскажите пожалуйста рабочий способ. Можно:

1) Авторизация с помощью email и пароль или телефон и пароль.

2) Авторизация с помощью телефон и пароль (лучше этот).

 

Спасибо.

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


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

Нашел, кому интересно вот правильный код:

if ($override) {
$customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where (LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "') AND status = '1'");
} else {
$customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE *(*LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "') AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

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


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

А решение для версии 2.Х такоеже?

 

 

Нашел, кому интересно вот правильный код:

if ($override) {
$customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer where (LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "') AND status = '1'");
} else {
$customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE *(*LOWER(email) = '" . $this->db->escape(strtolower($email)) . "' OR telephone = '" . $this->db->escape(strtolower($email)) . "') AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}

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


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

На 2.x не работает. Ищу возможные решения данного вопроса. Если у кого-то есть информация, поделитесь пожалуйста. 

 

Работает по паре телефон - пароль.

Изменено пользователем on1ine

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.