与discuz整合代码(登录)(支持最新的discuz5.5.0)

<? php
// 该文档保存为login.php
//首先将接口技术文档里的加密解密函数拷贝
//为了不让代码太乱,我拷贝到文档的结尾处
//假设自己的用户数据库表里用户名字段为UserName, 密码字段为Pwd, Email字段为 Email
//注册页实现方法差不多,可自行实现,疑问加我QQ:2666556


$act = ( isset ( $_GET [ ' act ' ])) ? $_GET [ ' act ' ] : " login " ;
if ( function_exists ( $act ))  $act (); else  login();        
if ( $act == " logout " )
{
logout();
}
function  login()
{        
        
$ErrMsg = UserCheck();
        
if ( $ErrMsg != "" ) echo   $ErrMsg ;        
        
// 后面加上显示你的登陆表单的代码 如
?>
< form action = bbs . php ? act = login method = post >
用户名
:< input name = username value = " byaren2002 " >
密码
:< input name = password value = " 65388084 " >
< input name = submit type = submit value = 登陆 ></ form >
<? php

}
// end function

function  logout() // 登出
{
        
$passportkey = " 1234567890 " ; // 这里换成你论坛通行证设置的passportkey
         $auth = $_COOKIE [ ' auth ' ];
        
setcookie ( " auth " ,   "" , time ()  -   3600 );
        
$forward = $_GET [ ' forward ' ];
        
if ( $forward == "" ) $forward = " ../../index.php " ; // 这里换成你的主页绝对地址或相对地址                                        
         $verify   =   md5 ( ' logout ' . $auth . $forward . $passportkey );
        
$auth = rawurlencode ( $auth );
        
$forward = rawurlencode ( $forward );
        
header ( " Location: bbs/api/passport.php?action=logout&auth=$auth&forward=$forward&verify=$verify " );
}

function  UserCheck() 
{        
        
$passportkey = " 1234567890 " ; // 这里换成你论坛通行证设置的passportkey
        
        //===========验证输入=====================

         if ( ! isset ( $_POST [ ' submit ' ]))  return //  login表单的按钮需要与此同名
         $usnm = $_POST [ ' username ' ]; // username换成你登陆表单里的用户名域                        
         $pwd = $_POST [ ' password ' ]; // password换成你登陆表单里的密码域   
        //$pwd==$_POST['password'];                     

         if ( $usnm == "" return   " 请输入用户名! " ;
        
if ( $pwd == "" return   " 请输入2密码! " ;
        
        
// =========数据库处理==========================
         $db = mysql_connect ( " localhost " ,   " root " ,   "" );
        
mysql_select_db ( " 521 " );
$sql = " Select * from `users` where username=' " . $usnm . " ' Limit 1 " ;        
        
$rs   =   mysql_query ( $sql , $db )        ;
        
$row   =   mysql_fetch_array ( $rs );
        
if ( ! $row ) return   " 该用户不存在 " ;
        
if ( $row [ " password " ] != substr ( md5 ( $pwd ) , 8 , 16 )) return   " 密码错误 " ;
        
mysql_free_result ( $rs );        
        
        
// ==============header到bbs=====================        
         $member   =   array
        (
                        
' time '       =>   time () ,
                        
' username '   =>   $row [ " username " ] ,
                        
' password '   =>   $row [ " password " ] ,
                        
' email '      =>   $row [ " email " ]
        );
        
$auth   =  passport_encrypt(passport_encode( $member ) ,   $passportkey );
        
setcookie ( " auth " , $auth , ( $_POST [ " Cookie " ] ?   time () + (int) $_POST [ " Cookie " : 0 ));
        
$forward = $_POST [ ' forward ' ];
        
if ( $forward == "" ) $forward = " ../../bbs " ;                                        
        
$verify   =   md5 ( ' login ' . $auth . $forward . $passportkey );
        
$auth = rawurlencode ( $auth );
        
$forward = rawurlencode ( $forward );
        
header ( " Location: bbs/api/passport.php?action=login&auth=$auth&forward=$forward&verify=$verify " );                        

}


// =============================================================
//=============以下为拷贝过来的函数============================

function  passport_encrypt( $txt ,   $key ) {
        
srand (( double ) microtime ()  *   1000000 );
        
$encrypt_key   =   md5 ( rand ( 0 ,   32000 ));        
        
$ctr   =   0 ;
        
$tmp   =   '' ;
        
for ( $i   =   0 $i   <   strlen ( $txt );  $i ++ ) {
                        
$ctr   =   $ctr   ==   strlen ( $encrypt_key ?   0   :   $ctr ;
                        
$tmp   .=   $encrypt_key [ $ctr ] . ( $txt [ $i ^   $encrypt_key [ $ctr ++ ]);
        }
        
return   base64_encode (passport_key( $tmp ,   $key ));
}

function  passport_decrypt( $txt ,   $key ) {
        
$txt   =  passport_key( base64_decode ( $txt ) ,   $key );
        
$tmp   =   '' ;
        
for  ( $i   =   0 $i   <   strlen ( $txt );  $i ++ ) {
                 
$tmp   .=   $txt [ $i ^   $txt [ ++ $i ];
        }
        
return   $tmp ;
}

function  passport_key( $txt ,   $encrypt_key ) {
        
$encrypt_key   =   md5 ( $encrypt_key );
        
$ctr   =   0 ;
        
$tmp   =   '' ;
        
for ( $i   =   0 $i   <   strlen ( $txt );  $i ++ ) {
                        
$ctr   =   $ctr   ==   strlen ( $encrypt_key ?   0   :   $ctr ;
                        
$tmp   .=   $txt [ $i ^   $encrypt_key [ $ctr ++ ];
        }
        
return   $tmp ;
}

function  passport_encode( $array ) {
        
$arrayenc   =   array ();
        
foreach ( $array   as   $key   =>   $val ) {
                   
$arrayenc []  =   $key . ' = ' . urlencode ( $val );
        }
        
return   implode ( ' & ' ,   $arrayenc );

}
// =========================================================================
//===========================拷贝结束======================================

?>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值