[Discuz]傳入 UID 及 md5 password 判斷是否正常登入
之前有個構想是利用 Discuz 來登入某 FileZilla FTP
選用 FileZilla FTP 的原因是因為他有開放原始碼,所以比較容易更改,但是我畢竟對 C++ 並不是那麼的熟悉,所以就先在 Discuz 這邊作個判斷網頁,判斷是否正確登入
那目前這作品因為沒有任何防 try 密碼的防護,所以不建議檔名取得大家都知道...
最好就 FTP Server 及 Discuz 端兩邊知道就行
而適用的版本為 Discuz 6.1F ,其他版本我並不確定是否需更改程式碼(如需的話大概會是在 checkmd5 那邊需作更改而已!)
選用 FileZilla FTP 的原因是因為他有開放原始碼,所以比較容易更改,但是我畢竟對 C++ 並不是那麼的熟悉,所以就先在 Discuz 這邊作個判斷網頁,判斷是否正確登入
那目前這作品因為沒有任何防 try 密碼的防護,所以不建議檔名取得大家都知道...
最好就 FTP Server 及 Discuz 端兩邊知道就行
<?php /* Design by 小期 */ define('NOROBOT', TRUE); define('CURSCRIPT', 'FTPCheckLogin'); require_once './include/common.inc.php'; require_once DISCUZ_ROOT.'./include/misc.func.php'; if(!preg_match("/^LOGIN_(?P<uid>\d+)$/i", $account, $matches)) exit("no"); $uid = $matches['uid']; $member = $db->fetch_first("SELECT m.uid AS discuz_uid, m.password AS discuz_pw, m.adminid, m.groupid, m.salt FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid) WHERE m.uid='$uid'"); if($member['discuz_uid'] && checkmd5($md5_password, $member['discuz_pw'], $member['salt'])) { if(in_array($member['adminid'], array(1, 2, 3)) || in_array($member['groupid'], array(20))) exit('ok'); else exit('no'); } else exit('no'); ?>那目前這版本限制的是使用 LOGIN_ 前綴加上你在該論壇的 uid ,然後只要你是管理階層(管理員、超版或版主)或者是特定群組(以此原始碼的例子為群組編號為 20) 即會丟出 ok 兩字,只要條件不符合則會丟出 no
而適用的版本為 Discuz 6.1F ,其他版本我並不確定是否需更改程式碼(如需的話大概會是在 checkmd5 那邊需作更改而已!)
留言
張貼留言