ホームページ >php教程 >php手册 >独自に開発したパスと互換性があるように discuz を変更する

独自に開発したパスと互換性があるように discuz を変更する

WBOY
WBOYオリジナル
2016-06-21 08:57:141056ブラウズ

独自に開発したパスと互換性があるように discuz、ucome、ucenter を変更します 最近少し連絡があり、コードの一部を修正したので、主要な部分を提供したいと思います。

独自に開発したパスと互換性があるように discuz、ucome、ucenter を変更します
最近少し連絡があり、コードの一部を修正したので、主要な部分を提供したいと思います。

現在、discuz の会員登録は discuz 独自のシステムで完了し、ucenter のデータベースにポスト (または mysql 直接操作、ここではポストと呼びます) されます。メンバーのパスワードは md5 (md5 (実際のパスワード) + 最初のランダムな文字) です。 sult)、メンバー ID は ucenter によって生成されます。次に、変更された値を取得し、discuz に保存します。

すでにパス システムをお持ちの場合は、ID を生成して独自のシステムにパスワードを保存し、それを ucenter に送り返し、dizcuz に保存します。

uc_center/client.php にコードを追加します


//cjjer
function uc_user_registerCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {

Return call_user_func(UC_API_FUNC, 'user', 'register', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>) ;$email, 'questionid'=>$questionid, 'answer'=>$answer));
}
function uc_user_updateCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {
return call_user_func(UC_API_FUNC, 'user', 'myupdate', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>$email 、'questionid'=>$questionid、'answer'=>$answer));
}


登録時に uc_user_registerCjjer を使用します。

contol/user.php にコードを追加します:

// cjjer によって書き換えられます

関数 onregister() {
$this->init_input();
$username = $this->input('username');
$myuserid = intval($this->input('uid'));
$password = $this->input('パスワード');
$email = $this->input('email');
$questionid = $this->input('questionid');
$answer = $this->input('answer');

if( (($status = $this->_check_username($username)) (($status = $this->_check_email($email)) ($status = $_ENV['user']->get_user_by_uid($myuserid))
) {
//会員情報更新開始
$_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
return $myuserid;
}その他{
$uid = $_ENV['user']->add_user($username, $password, $email, $myuserid, $questionid, $answer);
}
return $uid;
}

関数 onmyupdate() {
$this->init_input();
$username = $this->input('username');
$myuserid = intval($this->input('uid'));
$password = $this->input('パスワード');
$email = $this->input('email');
$questionid = $this->input('questionid');
$answer = $this->input('answer');

$status = $_ENV['user']->get_user_by_uid($myuserid);
if(!$status) {
return -1;
}
$uid = $_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
return $uid;
}

その後、model/user.php に追加


    function update_user($user_id,$username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        if(! $uid)return 0;
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        //不更新密码,,salt='$salt'
        $this->db->query("update ".UC_DBTABLEPRE."members SET username='$username', email='$email' where uid='$uid'");

return $user_id;
    }


その中で変更された add_user メソッドは次のとおりです:


    function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username'、password='$password'、email='$email'、regip='".$ this->base->onlineip."', regdate='".$this->base->time."', Salt='$salt'");
        $uid = $this->db->insert_id();
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
        $uid を返す;
    }

このようにして、ローカルでアクティブ化する必要がなく、ディスクに自動的に映すことができます。

この中の discuz システムの関連部分は、include/common.inc.php の 140 行程度のテスト ユーザーが登録するものです。独自の許可が含まれており、直接アクセスできます。

ucome は、source/function_common.php にあるこの関数 checkauth() 関数の数フィールドに直接アクセスできます。




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。