Jump to content

Авторизация через социальные сети


Recommended Posts

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

Что это дает?
- Автоматический вход клиента без регистрации в интернет-магазин
- Автоматическая регистрация покупателя который зашел через соц. сеть
- Сбор потенциальных покупателей на лету

И так приступим.
В шаблон index.tpl в нужном Вам месте вставим следующий код:

<!-- Ulogin -->
<script src="http://ulogin.ru/js/ulogin.js"></script>
<div id="uLogin" data-ulogin="display=small;fields=first_name,last_name,email,phone,city;providers=vkontakte,facebook,odnoklassniki,mailru;hidden=other;redirect_uri=http://ваш-сайт.ru/user/login"></div>
<!-- end -->

 
 
В фале view/LoginView.php после 64-й строки вставим следующий код:

// Вход через ULogin
elseif(isset($_POST['token']))
{
$s = file_get_contents('http://ulogin.ru/token.php?token='.$_POST['token'].'&host='.$_SERVER['HTTP_HOST']);
$simpla = json_decode($s, true);

if (isset($simpla['identity'])) {
$name = $simpla['first_name'].' '.$simpla['last_name'];
$email = $simpla['email'];
$phone = $simpla['phone'];
$city = $simpla['city'];
$password = md5($simpla['identity'].'Noxter');

//проверяем есть ли в БД такой e-mail
$this->db->query('SELECT count(*) as count, id FROM __users WHERE email=?', $email);
$user_exists = $this->db->result();

if($user_id = $this->users->check_password($email, $password))
{
$user = $this->users->get_user($email);
if($user->enabled)
{
$_SESSION['user_id'] = $user_id;
header('Location: '.$this->config->root_url);
}
else
{
$this->design->assign('error', 'user_disabled');
}
}
elseif($user_exists->count)
{
$_SESSION['user_id'] = $user_exists->id;
header('Location: '.$this->config->root_url);
}
else
{
$user_id = $this->users->add_user(
array('name'=>$name,
'email'=>$email,
'password'=>$password,
'enabled'=>1)
);
$_SESSION['user_id'] = $user_id;
header('Location: '.$this->config->root_url);
}
}
}

 
Вроде бы все.
Проверяем отписываемся.

Link to post
Share on other sites
  • Replies 124
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

>я имел ввиду от платного решения предложенного корсом чем отличается? >Ну я демо платной версии не видел и не щупал, я не думаю что есть отличия в функционале. Что из моей писанины Вы не поняли

header('Location: '.$this->config->root_url);

Posted Images

>я имел ввиду от платного решения предложенного корсом чем отличается?
>Ну я демо платной версии не видел и не щупал, я не думаю что есть отличия в функционале.
Что из моей писанины Вы не поняли? Я Вам дал ответ на Ваш вопрос.

Link to post
Share on other sites
А вместо того, чтоб такие бесполезные посты писать, не лучше ли затратить несколько минут и проверить, а потом уже высказываться по существу?

Это самому себе написано?? :))
Link to post
Share on other sites

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

Покажите скрин ошибки.

Edited by Noxter
Link to post
Share on other sites

меня лично немного другой вопрос мучает - а вообще народ пользуется нет авторизацией и регистрацией на интернет-магазинах?? Насколько полезная вещь?? Есть ответ?

Link to post
Share on other sites

=D> Спасибо Noxter, все работает! Единственное поле телефон не заполняется, хотя в БД есть поле "phone" и профиле пользователя тоже..

Link to post
Share on other sites
  • 4 weeks later...

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

 

Подскажите, пожалуйста, почему ваш вариант не желает работать? После авторизации через сервисы перебрасывает на страницу входа и ничего не происходит...

Link to post
Share on other sites
  • 1 month later...

кароче в IE8 нифига ulogin не работает. На хабре уже об этом писали. А через loginza делал кто?

Допиливал в свое время, приключений не возникало.

 

Правда при авторизации сразу собирал данные о пользователях, наверно что бы потом их почтовым спамом завалить =D

(на самом деле, что бы историю заказов можно было вести для тех кто openID пользуется).

 

Работает к примеру тут: http://flowers68.ru/user/login

Link to post
Share on other sites

Допиливал в свое время, приключений не возникало.

 

Правда при авторизации сразу собирал данные о пользователях, наверно что бы потом их почтовым спамом завалить =D

(на самом деле, что бы историю заказов можно было вести для тех кто openID пользуется).

 

Работает к примеру тут: http://flowers68.ru/user/login

 

у вас в ие вообще вся верстка сайта рушится.

post-3358-0-89879100-1370604232_thumb.jpg

Link to post
Share on other sites

Во-первых) верстка там не моя.

Во-вторых, ишак он и в африке ишак.

В-третьих, вы еще и старого ишака откопали) хорошо, что не Netscape Navigator какой-нибудь.

 

Переживать из-за бедных жителей камбоджи едва ли стоит. Овчинка выделки не стоит.

 

 

Link to post
Share on other sites

Все работает, спс.

 

Чтобы прописывало ip входа юзверя:

 

Этот кусок:

 

$user_id = $this->users->add_user(
array('name'=>$name,
'email'=>$email,
'password'=>$password,
'enabled'=>1)

 

Заменить:

 

$user_id = $this->users->add_user(
array('name'=>$name,
'email'=>$email,
'password'=>$password,
'enabled'=>1,
'last_ip'=>$_SERVER['REMOTE_ADDR'])

Пытался сделать так:

'enabled'=>$default_status

 

лупит нотисы.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...