Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено] Вход по номеру телефона


serge
 Поделиться

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

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

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


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

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


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

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

  • 3 месяца спустя...

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

 

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

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

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

 

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, все классно ( я как раз это и предлагал) , только...

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

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

  • 1 год спустя...

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

 

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, все классно ( я как раз это и предлагал) , только...

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

 

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

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


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

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

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

  • 10 месяцев спустя...

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

 

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'");
}
Ссылка на комментарий
Поделиться на других сайтах


  • 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 месяца спустя...

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

 

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

Изменено пользователем on1ine
Ссылка на комментарий
Поделиться на других сайтах


  • 8 месяцев спустя...

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

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

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

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

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

Войти

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

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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