我正在为社区开发一个小型手工制作的门户网站,我希望它有一个带IP.Board的登录系统(对最终用户来说更容易)。
我在同一主机上有论坛和应用程序。 对于loggin,用户单击按钮并重定向到此页面:
<?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";
&GT;
如果未登录IP.Board会话(论坛),则会返回index.php
现在我正在开发它的基本版本,一旦我开始工作,将会有更多的改进。
正如您所看到的,我有一个print
用于调试某些数据。
在 Edge 一切正常,但在 Firefox 或 chrome 上,我得到一个32个字符的字符串,每次都是不同的字符,而不是获取用户名。
我在 Firefox 和 Chrome 中获得的内容示例。
ef5cd2de05387b9b01048efad2173efd
有人知道为什么会这样吗?
信息:我跟着:IP.Board SSO Documentation
INFO2: Forum post
我使用IPS社区套件作为&#34; Master&#34;。
编辑1:调试\IPS\Member::loggedIn()
IPS \ Member Object([nodeClass:protected] =&gt; IPS \ awards \ Cats [_followData] =&gt; [_previousPhotoType:protected] =&gt; [_group] =&gt; [限制:受保护] =&gt; [modPermissions:protected] =&gt; [calculatedLanguageId:protected] =&gt; [markers] =&gt;数组() [markersResetTimes:protected] =&gt; Array()[haveAllMarkers:protected] =&GT; [defaultStreamId:protected] =&gt; [changedCustomFields] =&gt; Array()[previousName:protected] =&gt; [_socialGroups:protected] =&gt; [sessionData:protected] =&gt; [_lang:protected] =&gt; [_url:protected] =&gt; [profileFields] =&gt; [_reputationData:protected] =&gt; [_following:protected] =&gt; Array()[reportCount:protected] =&gt; [ignorePreferences:protected] =&gt; [_ppdLimit:protected] =&gt; [_data:protected] =&gt;数组([member_group_id] =&gt; 2 [mgroup_others] =&gt; [加入] =&gt; 1483440989 [ip_address] =&gt; 83.36.150.111 [timezone] =&gt;世界标准时间 [allow_admin_mails] =&gt; 1 [pp_photo_type] =&gt; [member_posts] =&gt; 0 [pp_main_photo] =&gt; [pp_thumb_photo] =&gt; [failed_logins] =&gt; [pp_reputation_points] =&gt; 0 [签名] =&gt; [auto_track] =&gt; {&#34;内容&#34;:0,&#34;评论&#34;:0,&#34;方法&#34;:&#34;立即&#34;})[_ new:protected] =&gt; 1 [已更改] =&gt;数组([member_group_id] =&gt; 2 [mgroup_others] =&gt; [加入] =&gt; 1483440989 [ip_address] =&gt; 83.36.150.111 [timezone] =&gt;世界标准时间 [allow_admin_mails] =&gt; 1 [pp_photo_type] =&gt; [member_posts] =&gt; 0) [skipCloneDuplication] =&gt; )
答案 0 :(得分:1)
好吧,我认识到这已经超过两年了,但是最近我使用本地主机安装遇到了同样的问题。就我而言,当我尝试空白的新文件时,它也遇到了同样的问题,但最终修复了自己。
当我尝试实际将其与我的网站集成时,它每次都会这样做。事实证明,这与删除不良的UTF-8字符有关。
我完全不知道为什么这样做有什么区别,但是一旦我拿出将GET,POST和COOKIE中最重要的字符都剥离掉的代码,它就可以正常工作了。
对于现在正在执行此操作的任何人,除了在尝试找到注释之前注释掉代码行外,除了试行和错误之外,您实际上无能为力。 IPS真的对这种事情根本没有帮助,让您感到自己在使用它(实际上就是这样)。
答案 1 :(得分:0)
我决定在IP.Board Te的其他选项中使用SSO的其他选项,将登录请求发送到论坛,而不需要检查会话。论坛API就是这么做的。
答案 2 :(得分:-1)
确保系统的网址(域部分)与IPS相同,即 www .example.com不仅仅是example.com example.com将提供该哈希值,而www.example.com则不会。
在看到这个之前花了一些时间......
编辑:那根本不是。如果我退出论坛,可能会多次登录论坛,它适用于所有浏览器。我没有看到一个模式,除了尝试几次(至少一次)。抱歉,答案很差!
的Eirik