Технический сбой

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

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


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

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

ПРимер из 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 - -

Вот именно, исходя из моего запроса не получается я уже пробовал это взять, но меня 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 - -

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

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

golden_eagle_god
Юзер

golden_eagle_god - -

А подойдет, если я его возьму из запроса основного, он же там закодирован в 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 - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

Этот?

$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 - -

Тоесть так?


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

Mofsy
Эксперт

Mofsy - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

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

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

Так пойдет?

Mofsy
Эксперт

Mofsy - -

да, пойдет.

golden_eagle_god
Юзер

golden_eagle_god - -

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

Mofsy
Эксперт

Mofsy - -

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

vitnet
PHP-developer

vitnet - -

$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 - -

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


$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 - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

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

rocksmart
Юзер

rocksmart - -

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

golden_eagle_god
Юзер

golden_eagle_god - -

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

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

наверх