Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


serge

Recommended Posts

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


  • 3 months later...

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

 

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

Надіслати
Поділитися на інших сайтах

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

 

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 year later...

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

 

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 months later...

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

 

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 month later...

А решение для версии 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 months later...

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

 

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

Змінено користувачем on1ine
Надіслати
Поділитися на інших сайтах


  • 8 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.