IP.Board - 在php

时间:2017-01-02 21:11:20

标签: php session single-sign-on ipb invision-power-board

我正在为社区开发一个小型手工制作的门户网站,我希望它有一个带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; )

3 个答案:

答案 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