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

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

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

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

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

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

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

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

    = . = header()}


19 个回复 | 最后更新于 2016-12-05
lzx123456
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;
        }


lincanbin
2016-11-30
#2

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

当然没有。

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

lzx123456
2016-11-30
#3

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

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

lincanbin
2016-11-30
#4

回复#3 @lzx123456 :

$Expires你有定义吗?

lincanbin
2016-11-30
#5

回复#3 @lzx123456 :

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

lzx123456
2016-11-30
#6

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

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

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

lzx123456
2016-11-30
#7

回复#5 @lincanbin :

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

lincanbin
2016-11-30
#8

回复#7 @lzx123456 :

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

lzx123456
2016-11-30
#9

回复#8 @lincanbin :

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

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

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

lzx123456
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');
}

lincanbin
2016-11-30
#11

回复#9 @lzx123456 :

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

你至少多传个校验值。

lzx123456
2016-11-30
#12

回复#11 @lincanbin :

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

lincanbin
2016-11-30
#13

回复#12 @lzx123456 :

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

lzx123456
2016-11-30
#14

回复#13 @lincanbin :

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

lincanbin
2016-11-30
#15

回复#14 @lzx123456 :

谢谢

ivanilla
2016-11-30
#16

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

lzx123456
2016-11-30
#17

回复#16 @ivanilla :

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

ivanilla
2016-11-30
#18

回复#17 @lzx123456 :

你可以选择换家公司

猫sir猫sir
2016-12-05
#19

回复#18 @ivanilla :

一言不合就换公司…


登 录


现在注册

QQ  登 录    Weibo  登 录    GitHub  登 录