Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как лучше записать Куки, при авторизации через соц.сети

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


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

вопрос
Делаю авторизацию через ВКонтакте. в базе данных есть столбец 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
64

307 | 115

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
26

247 | 34

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
6

185 | 57

Mofsy - 6 февраля 2014 20:52 - Эксперт

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

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

golden_eagle_god
26

247 | 34

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
6

185 | 57

Mofsy - 9 февраля 2014 12:42 - Эксперт

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

golden_eagle_god
26

247 | 34

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
26

247 | 34

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

Тоесть так?


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

Mofsy
6

185 | 57

Mofsy - 10 февраля 2014 15:57 - Эксперт

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

golden_eagle_god
26

247 | 34

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

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

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

Так пойдет?

Mofsy
6

185 | 57

Mofsy - 12 февраля 2014 22:15 - Эксперт

да, пойдет.

golden_eagle_god
26

247 | 34

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

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

Mofsy
6

185 | 57

Mofsy - 13 февраля 2014 14:58 - Эксперт

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

vitnet
218

2172 | 930

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
26

247 | 34

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
26

247 | 34

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

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

golden_eagle_god
26

247 | 34

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

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

golden_eagle_god
26

247 | 34

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

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

golden_eagle_god
26

247 | 34

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

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

rocksmart
64

307 | 115

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

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

golden_eagle_god
26

247 | 34

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

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

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

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