パスなしでの DISCUZ ログインの内容の紹介
DISCUZ は中国で最も一般的に使用されているフォーラムですが、誰でも接続できるパスがありますが、実際にはユーザーの統合がまだ非常に不十分です。 2 つのユーザー テーブル。1 つ目は登録と管理に便利ではありません。2 つ目はデータベースを無駄にします。
最近、DISCUZ を使用するプロジェクトに取り組んだので、DISCUZ のログインを研究し、基本的に同期ログインを完了しました。興味があれば調べてみてください。
これ以上はナンセンスです。独自のシステムを作成する場合は、DISCUZ 公開ファイルを直接使用して、include/common.inc.php を直接引用することができます。これが最も簡単です。$discuz_uid はユーザー ID です。 $discuz_user はユーザー名です。
独自のパブリック ファイルを使用する場合は、global.func.php の 2 つの関数
Dsetcookie と、怠惰でない場合は authcode を抽出する必要があります。関数clearcookiesをコピーします。1つ目はDISCUZ独自のCOOKIE関数、2つ目はDISCUZの可逆暗号化関数、3つ目はclear COOKIE関数です。
わかりました。 COOKIE の作成と識別のメソッドを書き始めましょう。
function lgoin($array)
{
$username = $array['username'];
$password = $array['password']; ;
$sql = "SELECT `uid`,`password`,`secques` FROM `cdb_members` WHERE
`username`='$username' および `password`=md5('$password')";
try {
$this ->db -> query($sql);
}catch (Exception $e){
exit("クエリエラー、エラーメッセージ: " .$e->getMessage());
return 0;
$row = $this ->db -> fetch ($rs);名前とパスワードは正しいです
if($row){
dsetcookie('sid','',-2423234234) // ログアウト sid
$secques = $row['secques']; 🎜>$uid = $row['uid'];
$formPassword = $row['password'];
dsetcookie('auth', authcode("$ formPasswordt$secquest$uid", 'ENCODE' ,'123'), '0');
return 1;
}else{
return 2;
}
これはログイン関数です。ナンセンスな話はやめて、重要な部分について直接話しましょう。クエリ後に情報が取得されると、UID、PASSWORD、SECQUES の 3 つの情報が得られます。これら 3 つが DISCUZ に必要なものです。 1 つ目はユーザー ID、2 つ目は暗号化されたパスワード、3 つ目は質問に対する暗号化された回答です (設定されていない場合でも使用する必要があります)。と答えがありますが、ログイン時には必要ないので、ここで直接確認しました。 dsetcookie('auth', authcode("$formPasswordt$secquest$uid", 'ENCODE','123'), '0');
この文はユーザーの COOKIE を作成するものです。この「123」に注意してください。これは、DISCUZ と同じである必要があるため、1 つは global.func.php であり、 other はコピーされた authcode 関数であり、authcode を使用する場合に使用します。この時点でフォーラムにログインできるはずです。ログインできない場合は、以下を参照してください。