Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как лучше записать Куки, при авторизации через соц.сети

Как лучше записать Куки, при авторизации через соц.сети


     05.02.2014    Общие вопросы, Общие вопросы по PHP, Модули, MySQL    3772

вопрос
Делаю авторизацию через ВКонтакте. в базе данных есть столбец vk-id, в котором хранится ID пользователя в ВК.

Скрипт работает так:

Получив от VK API ид юзера в вк - ищет в БД по vk-id пользователя.

При нахождении пользователя он должен создать куки и перекинуть из внешнего PHP на сайт.

А если не найдет то просит ввести пароль и после создания записи в БД он должен перекинуть меня на сайт с созданными куками.

Я пробовал по разному создать эти куки, но у меня не получалось. Помогите пожалуйста.

Как он их кодирует для Залогивания?

Примерный код могу дать:


Получил данные от АПИ ВК

$user_id=Полученный ИД вк;

$db->super_query( "SELECT name,password,user_id,lastdate FROM " . USERPREFIX . "_users WHERE vk_uid = '$user_id'");

//если не пустое
If($row['name']) {

Как то тут надо записать куки. (set_cookie)

header('Location: http://'.$_SERVER['SERVER_NAME']);

}else{

Здесь создаем запись в БД нового пользователя

Также как то надо записать куки

header('Location: http://'.$_SERVER['SERVER_NAME']);

}

Ответа пока нет


20 комментариев

rocksmart
Юзер

rocksmart - 5 февраля 2014 18:13 -

ПРимер из sitelogin.php

set_cookie( "dle_user_id", $member_id['user_id'], 365 );
set_cookie( "dle_password", $_POST['login_password'], 365 );


Не вижу проблемы

golden_eagle_god
Юзер

golden_eagle_god - 6 февраля 2014 12:31 -

Вот именно, исходя из моего запроса не получается я уже пробовал это взять, но меня header кидает со скрипта на ГЛ сайта а куков нет. Может это из за того что файл запускается не из под ДЛЕ, тоесть хранится не в engine и не записан в engine.php. И кстате откуда берутся пост-данные?

Чуть чуть переделал под себя.

$db->super_query( "SELECT name,password,user_id,lastdate FROM " . USERPREFIX . "_users WHERE vk_uid = '$user_id'");

set_cookie( "dle_user_id", $row['user_id'], 365 );
set_cookie( "dle_password", $_POST['login_password'], 365 );

Mofsy
Эксперт

Mofsy - 6 февраля 2014 20:52 -

Цитата: golden_eagle_god
$_POST['login_password']

Должно принимать значение одинарного md5 хеша пароля. В противном случае авторизация не пройдет.

golden_eagle_god
Юзер

golden_eagle_god - 7 февраля 2014 09:42 -

А подойдет, если я его возьму из запроса основного, он же там закодирован в MD5 уже. Типо так:


$db->super_query( "SELECT name,password,user_id,lastdate FROM " . USERPREFIX . "_users WHERE vk_uid = '$user_id'");

set_cookie( "dle_user_id", $row['user_id'], 365 );
set_cookie( "dle_password", $row['password'], 365 );

Mofsy
Эксперт

Mofsy - 9 февраля 2014 12:42 -

нет не пойдет, там двойной md5 хэш.

golden_eagle_god
Юзер

golden_eagle_god - 10 февраля 2014 08:37 -

Этот?

$dle_login_hash = md5( SECURE_AUTH_KEY . $_SERVER['HTTP_HOST'] . $member_id['user_id'] . sha1($_POST['login_password']) . $config['key'] . date( "Ymd" ) );

Снова вытекает вопрос как заменить пост, ведь у меня данные берутся из бд. Причем уже закодированные. (Поле Password из _users)

golden_eagle_god
Юзер

golden_eagle_god - 10 февраля 2014 14:15 -

Тоесть так?


md5(md5(Пароль))

Mofsy
Эксперт

Mofsy - 10 февраля 2014 15:57 -

Вы не совсем меня поняли, авторизовать пользователя невозможно, с теми данными которые есть в базе данных DLE в таблице пользователи.

golden_eagle_god
Юзер

golden_eagle_god - 11 февраля 2014 15:10 -

Эммм, а если я буду сохранять данные пользователей без кодировки, в отдельную колонку таблицы.

Ввел человек 123456 при первом входе на сайт, оно сохранилось как есть и используется дальше.

Так пойдет?

Mofsy
Эксперт

Mofsy - 12 февраля 2014 22:15 -

да, пойдет.

golden_eagle_god
Юзер

golden_eagle_god - 13 февраля 2014 10:02 -

А случайно не безопасно ли хранить пароли в БД в открытом виде?

Mofsy
Эксперт

Mofsy - 13 февраля 2014 14:58 -

Да не безопасно, храните одинарный md5 хеш.

vitnet
PHP-developer

vitnet - 7 февраля 2014 10:45 -

$db->super_query( "SELECT name,password,user_id,lastdate FROM " . USERPREFIX . "_users WHERE vk_uid = '$user_id'");

set_cookie( "dle_user_id", $row['user_id'], 365 );
set_cookie( "dle_password", $row['password'], 365 );

$db - запрос
$row - ?

$row = $db->super_query("...");

golden_eagle_god
Юзер

golden_eagle_god - 7 февраля 2014 11:04 -

Ой, неправильно изначально скинул, вот тогда так.


$user_id - Поученный ид вк.

$request = $db->super_query( "SELECT name,password,user_id,lastdate FROM " . USERPREFIX . "_users WHERE vk_uid = '$user_id'");

//если есть то входим
If($request['name']) {

set_cookie( "dle_user_id", $request['user_id'], 365 );
set_cookie( "dle_password", $request['password'], 365 );

}else.......


Но так не работает тоже.

golden_eagle_god
Юзер

golden_eagle_god - 7 февраля 2014 17:22 -

Поднимаю вопрос

golden_eagle_god
Юзер

golden_eagle_god - 8 февраля 2014 10:53 -

Поднимаю вопрос 1

golden_eagle_god
Юзер

golden_eagle_god - 9 февраля 2014 12:09 -

Помогите уже ктонибудь ;)

golden_eagle_god
Юзер

golden_eagle_god - 12 февраля 2014 14:45 -

Поднимаю вопрос 3

rocksmart
Юзер

rocksmart - 9 февраля 2014 13:47 -

Что именно не работает ? куки не записываются или что ?

golden_eagle_god
Юзер

golden_eagle_god - 10 февраля 2014 08:32 -

Да куки не записываются, поглядите предыдущие комм-ты там есть примеры кода.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх