如何将Carbon嵌入公司当前项目中使用?

By lzx123456 at 2016-11-29 • 2人收藏 • 460人看过

公司要求现有项目的用户与Carbon论坛的用户统一,这到是好办,数据表复制一份改改字段就行了;然后要求公司项目的用户进入网站后要自动登录上Carbon论坛里,于是做了代码改动,用用户名自动登录,贴出改动代码(common.php)如下:(用户到是查出来了,问题是回帖等功能都不好使,$CurUserID总是为空...求助...)

() {
    = . = header()header()= ()= ()= intval(())(!|| !|| !|| ([]) || abs(- ) > || !(md5(. [] . ))) {
        ()}
} ([] == [] || (![] && )) {
    = . = header()} {

    = htmlspecialchars(trim(()))() {

        = ->(. . (
            => ))() {

            = * + = md5([] . [] . . )((
                => []=> => ))}
    }

    = . = header()}


19 个回复 | 最后更新于 2016-12-05
2016-11-29   #1
$mobileUserName = htmlspecialchars(trim(Request('Get', 'username')));
    if ($mobileUserName) {

        //查询用户信息
        $DBUser = $DB->row("SELECT ID,UserName,Salt,Password,UserRoleID,UserMail,UserIntro FROM " . PREFIX . "users WHERE UserName = :UserName", array(
            "UserName" => $mobileUserName
        ));

        if ($DBUser) {

            //设置Cookie
            $TemporaryUserExpirationTime = $Expires * 86400 + $TimeStamp;
            $TemporaryUserCode = md5($DBUser['Password'] . $DBUser['Salt'] . $TemporaryUserExpirationTime . SALT);
            SetCookies(array(
                'UserID' => $DBUser['ID'],
                'UserExpirationTime' => $TemporaryUserExpirationTime,
                'UserCode' => $TemporaryUserCode
            ), 30);//过期时间30天

            //设置用户信息
            $CurUserInfo = $DBUser; //当前用户信息,Array,以后判断是否登陆使用if($CurUserID)
            $CurUserRole = 1;
            $CurUserID = $DBUser['ID'];
            $CurUserExpirationTime = $TemporaryUserExpirationTime;
            $CurUserCode = $TemporaryUserCode;
        }


2016-11-30   #2

当你没有$mobileUserName的时候,$CurUserID就没有被赋值。

当然没有。

解决这个的正确思路是SSO,而不是这个。

2016-11-30   #3

$mobileUserName能够拿到传值,也能从数据库查出用户信息,UserID正常,但是到了具体页面上再操作时$CurUserID就取不到;

现在公司的系统是.net写的,数据库用的sqlserver,能做SSO?

2016-11-30   #4

回复#3 @lzx123456 :

$Expires你有定义吗?

2016-11-30   #5

回复#3 @lzx123456 :

SSO无所谓语言,不同语言的平台都可以接入的。

2016-11-30   #6
$Expires    = min(intval(Request('Post', 'Expires', 30)), 30); //最多保持登陆30天

页面上不做选择,默认30天;

我大概知道是什么原因了,Cookie的问题,原login登录成功后做了一次重定向

2016-11-30   #7

回复#5 @lincanbin :

当前问题解决了,谢谢!期待IOS版本发布!

2016-11-30   #8

回复#7 @lzx123456 :

你这个登录只靠一个$mobileUserName,感觉一点都不安全啊。

2016-11-30   #9

回复#8 @lincanbin :

如果放到web上确实是的。公司的需求是这样:web以及wap必须正常登录进入,app中做用户同步功能,所以我在这里:

([] == [] || (![] && )) {
    = . = header()}

做处理,接收到mobileUserName表明是在app中访问,否则是wap访问,这样的话只相当于在app的webview中开通的SSO功能,这样做怎么样

2016-11-30   #10

elseif ($_SERVER['HTTP_HOST'] == $Config['MobileDomainName'] || (!$Config['MobileDomainName'] && $IsMobile)) {
    $TemplatePath = __DIR__ . '/view/mobile/template/';
    $Style = 'Mobile';
    header('X-Frame-Options: SAMEORIGIN');
}

2016-11-30   #11

回复#9 @lzx123456 :

还是不好,抓个包照样干。

你至少多传个校验值。

2016-11-30   #12

回复#11 @lincanbin :

恩,对,好,我和.net沟通下。谢谢你!carbon当真很好,计划出IOS版本吗?

2016-11-30   #13

回复#12 @lzx123456 :

有计划,但是目前还没iPhone。

2016-11-30   #14

回复#13 @lincanbin :

我会一直关注Carbon的动态,祝你工作顺利,祝愿Carbon项目屹立不倒!

2016-11-30   #15

回复#14 @lzx123456 :

谢谢

2016-11-30   #16

这年头用.net的公司不多了吧。。。为什么不用开源的PHP和MySQL(或者MariaDB)?Linux也是免费开源的,用CentOS就好了,还省了买Windows Server和SQL Server的费用。

2016-11-30   #17

回复#16 @ivanilla :

我也是这么认为的,但老板是.net出身,公司的web、CS端、API开发全是.net,木有办法

2016-11-30   #18

回复#17 @lzx123456 :

你可以选择换家公司

2016-12-05   #19

回复#18 @ivanilla :

一言不合就换公司…

登录后方可回帖

登 录
信息栏
购买PHP虚拟主机 / VPS

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.0.1
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

Loading...