Я разрабатываю небольшой ручной веб-портал для сообщества и хочу, чтобы в нем была система входа с IP.Board (проще для конечного пользователя).
У меня форум и приложение на одном хостинге.
Для входа в систему пользователь нажимает кнопку и перенаправляется на эту страницу:
<?php
require_once '../www/forum/init.php';
include_once 'includes/functions.php';
error_reporting(E_ALL);
session_start();
\IPS\Session\Front::i();
print_r( \IPS\Member::loggedIn());
if(\IPS\Member::loggedIn()->member_id) {
$name = \IPS\Member::loggedIn()->name;
if(checkUserExistance($name)==0){
//header("Location: ../index.php");
print("LOGED EXIT!!!!!!!!!!!!!!!!!!!!");
}else{
print("LOGED INNNN!!!!!!!!!!!!!!!!!!!!");
$_SESSION['authenticated'] = 'yes';
$_SESSION['user'] = $name;
$userphoto = \IPS\Member::loggedIn()->photo;
$result = getUserData($_SESSION['user']);
$_SESSION['isLeader'] = $result['isLeader'];
$_SESSION['isAdmin'] = $result['isAdmin'];
}
} else{
print("LOGED OUT!!!!!!!!!!!!!!!!!!!!");
$_SESSION['authenticated'] = 'no';
if(session_destroy()){ // Destroying All Sessions
//header("Location: index.php");
}
}
//echo "Auth by LOGIN";
?>
Если вы не авторизованы в сессии IP.Board (форум), она возвращается к index.php
На данный момент я разрабатываю базовую версию, после того, как я получу эту работу, будет сделано больше улучшений.
Как видите, у меня есть print
для отладки некоторых данных.
На край все работает, но на Fire Fox или же хром Я получаю строку из 32 символов, каждый раз по-разному, вместо того, чтобы получить имя пользователя.
Пример того, что я получаю в Fire Fox а также Хром.
ef5cd2de05387b9b01048efad2173efd
Кто-нибудь знает, почему это?
ИНФОРМАЦИЯ: Я последовал за: Документация IP.Board SSO
INFO2: Пост форума
Я использую IPS Community Suite в качестве «Мастера».
РЕДАКТИРОВАТЬ 1: Отладка \IPS\Member::loggedIn()
IPS \ Member Object ([nodeClass: protected] => IPS \ awards \ Cats
[_followData] => [_previousPhotoType: protected] => [_group] =>
[ограничения: защищен] => [modPermissions: защищен] =>
[selectedLanguageId: protected] => [markers] => Array ()
[markersResetTimes: protected] => Array () [haveAllMarkers: protected] => [defaultStreamId: protected] => [updatedCustomFields] => Array () [previousName: protected] => [_socialGroups: protected] =>
[sessionData: protected] => [_lang: protected] => [_url: защищенный] =>
[profileFields] => [_reputationData: protected] =>
[_following: protected] => Array () [reportCount: protected] =>
[ignorePreferences: protected] => [_ppdLimit: protected] =>
[_data: protected] => Массив ([member_group_id] => 2 [mgroup_others] =>
[join] => 1483440989 [ip_address] => 83.36.150.111 [часовой пояс] => UTC
[allow_admin_mails] => 1 [pp_photo_type] => [member_posts] => 0
[pp_main_photo] => [pp_thumb_photo] => [failed_logins] =>
[pp_reputation_points] => 0 [подпись] => [auto_track] =>
{«content»: 0, «comments»: 0, «method»: «немедленный»}) [_new: protected] =>
1 [изменено] => массив ([member_group_id] => 2 [mgroup_others] =>
[join] => 1483440989 [ip_address] => 83.36.150.111 [часовой пояс] => UTC
[allow_admin_mails] => 1 [pp_photo_type] => [member_posts] => 0)
[skipCloneDuplication] =>)
Я решил использовать другую опцию для SSO в IP.Board Te другой вариант, отправляет запрос на вход в форум, и не нужно проверять сеансы. Форум API делает это.
Убедитесь, что URL (доменная часть) вашей системы совпадает с IPS, т.е. WWW.example.com не только example.com
example.com даст этот хеш, а www.example.com — нет.
Потратил некоторое время, прежде чем увидеть это ….
Редактировать: и это было совсем не так. Если я выхожу из форума и, возможно, несколько раз, это работает во всех браузерах. Я не вижу закономерности, кроме попыток несколько раз (хотя бы один раз). Извините за плохой ответ!
Эйрик