soundspice Опубликовано 19 Декабря 2009 Жалоба Поделиться Опубликовано 19 Декабря 2009 Стоит CMS danneo, интеграция с 2.3 нормально, а вот с форумом 3.0.4 теперь не пашет. Подскажите, что изменилось то? Я особо в PHP не понимаю, тем более в авторизации. Если кому не лень, гляньте файл, как и чего изменить согласно новой версии форума? <?php if(!defined("DNREAD")) exit(); // Класс : Начало class userapi{ /* ==================================================== ## ## Настройки интеграции, правьте только их !!! ## ## ==================================================== */ var $data = array('prefix'=>'ibf_', // Таблица пользователей 'table'=>'ibf_members', // Таблица пользователей // 'tablesess'=>'ibf_sessions', // Таблица сессий // 'tableextra'=>'ibf_member_extra', // Таблица доп.данных пользователя 'userid'=>'id', // Название ID пользователя в базе 'sessexp'=>9600, // Срок действия сессии 'cookie'=>'', // Название cookie 'cookieexp'=>9600, // Срок действия cookie 'avatarpath'=>'forum/style_avatars/', 'avatarupload'=>'forum/uploads/', 'linkreg'=>'forum/index.php?act=Reg&CODE=00', // Ссылка на регистрацию 'linklost'=>'forum/index.php?act=Reg&CODE=10', // Ссылка на восстановление пароля 'linkprivmess'=>'', // Ссылка на личные сообщения 'linkprofile'=>'forum/index.php?showuser='); // ССылка на профиль /* ==================================================== ## ## Настройки интеграции, правьте только их !!! ## ## ==================================================== */ var $db; // Соединение var $ua = array(); // Массив var $usermain = array('logged'=>0, // Массив 'userid'=>0, 'uname'=>'', 'umail'=>'', 'regdate'=>'', 'lastvisit'=>'', 'icq'=>'', 'msn'=>'', 'www'=>'', 'newmsg'=>0, 'newmsgnr'=>0, 'avatar'=>''); // function userapi(&$db,$logged = false){ $this->db = &$db; if($logged){ return $this->userarray(); } } // function clears($val){ $val = str_replace(array(" ",chr(0xCA),"<!--","-->",">","<","\"","!"), array(" ","","<!--","-->",">","<",""","!"), $val); $val = preg_replace(array("/\n/","/\\\$/","/\r/"), array("<br />","$",""), $val); return $val; } // function avatar($scr,$type,$link = false){ $avatar = ''; if($scr){ if($type == 'local'){ $avatar = ($link) ? '<img alt="" src="'.$this->data['avatarpath'].$scr.'">' : $this->data['avatarpath'].$scr; } if($type == 'url'){ $avatar = ($link) ? '<img alt="" src="'.$scr.'">' : $scr; } if($type == 'upload'){ $avatar = ($link) ? '<img alt="" src="'.$this->data['avatarupload'].$scr.'">' : $this->data['avatarupload'].$scr; } } return $avatar; } // userarray function userarray(){ global $setting; // $setting['editmail'] = 'no'; // $ipb = array(); $ipb['usagent'] = substr($_SERVER['HTTP_USER_AGENT'],0,255); $ipb['sessid'] = (isset($_COOKIE[$this->data['cookie'].'session_id'])) ? $_COOKIE[$this->data['cookie'].'session_id'] : ''; $ipb['sessid'] = eregi("[^a-z0-9]",$ipb['sessid']) ? '' : substr($ipb['sessid'],0,32); $ipb['pashas'] = isset($_COOKIE[$this->data['cookie'].'pass_hash']) ? $_COOKIE[$this->data['cookie'].'pass_hash'] : ''; $ipb['pashas'] = eregi("[^a-z0-9]",$ipb['pashas']) ? '' : $this->clears(substr($ipb['pashas'],0,32)); // if(isset($ipb['sessid']) && isset($ipb['pashas'])){ // if(empty($ipb['sessid'])){ $ipbsess['member_id'] = 0; } else { $ipbsess = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."sessions WHERE id='".$this->db->escape(addslashes($ipb['sessid']))."' AND running_time > ".(NEWTIME - $this->data['sessexp'])." AND browser='".$this->db->escape(addslashes($ipb['usagent']))."'")); } // if($ipb['pashas'] && $ipbsess['member_id'] > 0){ $newuser = $this->db->fetchrow($this->db->query("SELECT id,name,email,joined,new_msg,msg_total,last_visit,member_login_key FROM ".$this->data['prefix']."members WHERE id ='".intval($ipbsess['member_id'])."'")); if($newuser['id'] && $newuser['name'] && $newuser['member_login_key']==$ipb['pashas']){ $ipbextra = $this->db->fetchrow($this->db->query("SELECT icq_number,website,msnname,avatar_location,avatar_type FROM ".$this->data['prefix']."member_extra WHERE id='".intval($newuser['id'])."'")); $this->usermain = array('logged'=>1, 'userid'=>intval($newuser['id']), 'uname'=>$newuser['name'], 'umail'=>$newuser['email'], 'regdate'=>$newuser['joined'], 'lastvisit'=>$newuser['last_visit'], 'icq'=>$ipbextra['icq_number'], 'msn'=>$ipbextra['msnname'], 'www'=>$ipbextra['website'], // BLOCK INFO 'newmsg'=>$newuser['new_msg'], 'newmsgnr'=>$newuser['msg_total'], 'avatar'=>$this->avatar($ipbextra['avatar_location'],$ipbextra['avatar_type'],1) ); } } // } } // userarray // logout function logout(){ if($this->usermain['logged'] == 1 && intval($this->usermain['userid']) > 0){ $this->db->query("DELETE FROM ".$this->data['prefix']."sessions WHERE member_id = '".$this->usermain['userid']."'"); @setcookie($this->data['cookie'].'session_id',"",NEWTIME - $this->data['cookieexp'],"/","",0); @setcookie($this->data['cookie'].'member_id',"",NEWTIME - $this->data['cookieexp'],"/","",0); @setcookie($this->data['cookie'].'pass_hash',"",NEWTIME - $this->data['cookieexp'],"/","",0); } } // logout // checkpwd function checkpwd($passw){ return (strlen($passw) > 32) ? 0 : 1; } // checkpwd // checklogin function checklogin($login){ return (strlen($login) > 32 || strlen($login) < 3) ? 0 : 1; } // checklogin // issetmail function issetmail($mail){ return $this->db->numrows($this->db->query("SELECT id FROM ".$this->data['prefix']."members WHERE email = '".$this->db->escape($mail)."' AND id <> ".$this->usermain['userid']."")); } // issetmail // addmail function addmail($mail){ $this->db->query("UPDATE ".$this->data['prefix']."members SET email = '".$this->db->escape($mail)."' WHERE id = ".$this->usermain['userid'].""); } // addmail // addurl function addurl($url){ if($url){ $url = (!preg_match('#^http[s]?:\/\/#i',$url)) ? "http://".$url : $url; $url = (!preg_match('#^http[s]?\\:\\/\\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+#i',$url)) ? '' : $url; } else { $url = ''; } return $url; } // addurl // adddata function adduse($icq,$www,$msn){ $this->db->query("UPDATE ".$this->data['prefix']."member_extra SET icq_number='".$this->db->escape($icq)."',website='".$this->db->escape($www)."',msnname='".$this->db->escape($msn)."' WHERE id = '".$this->usermain['userid']."'"); } // adddata // associat function associat($in = false){ $associat = array(); if($in){ $inq = $this->db->query("SELECT u.id,u.name,u.joined,e.avatar_location,e.avatar_type FROM ".$this->data['prefix']."members u LEFT JOIN ".$this->data['prefix']."member_extra AS e ON (u.id = e.id) WHERE u.id IN (".$this->db->escape($in).")"); while($item = $this->db->fetchrow($inq)){ $associat[$item['id']]['userid'] = $item['id']; $associat[$item['id']]['uname'] = $item['name']; $associat[$item['id']]['regdate'] = $item['joined']; $associat[$item['id']]['avatar'] = $this->avatar($item['avatar_location'],$item['avatar_type']); } } return $associat; } // associat // login function login($login,$pass){ if($this->usermain['logged'] == 0 && intval($this->usermain['userid']) == 0){ $login = $this->clears($login); if($newuser = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE name = '".$this->db->escape($login)."'"))){ if($conve = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members_converge WHERE converge_id='".$newuser['id']."' AND converge_email='".$newuser['email']."'"))){ $pass = md5($this->clears($pass)); $checkpass = md5(md5($conve['converge_pass_salt']).$pass); if($conve['converge_pass_hash'] == $checkpass){ // // $this->db->query("DELETE FROM ".$this->data['prefix']."sessions WHERE member_id = '".$newuser['id']."'"); // $newsess['id'] = md5(uniqid(microtime())); $newsess['ip'] = substr($_SERVER['REMOTE_ADDR'],0,50); $newsess['ua'] = substr(addslashes($_SERVER['HTTP_USER_AGENT']),0,255); // $this->db->query("INSERT INTO ".$this->data['prefix']."sessions (id,member_name, member_id, ip_address, browser, running_time, login_type, member_group) VALUES ('".$newsess['id']."', '".$newuser['name']."', '".$newuser['id']."', '".$newsess['ip']."', '".$newsess['ua']."', '".NEWTIME."', 0, '".$newuser['mgroup']."')"); @setcookie($this->data['cookie'].'session_id',$newsess['id'],NEWTIME + $this->data['cookieexp'],"/","",0); @setcookie($this->data['cookie'].'member_id',$newuser['id'],NEWTIME + $this->data['cookieexp'],"/","",0); @setcookie($this->data['cookie'].'pass_hash',$newuser['member_login_key'],NEWTIME + $this->data['cookieexp'],"/","",0); } } } } } // login // ADMIN FUNCTION // LIST function userlist($sf,$nu,$p,$sess){ global $lang; $inq = $this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE id > 0 ORDER BY id DESC LIMIT $sf,$nu"); while($item = $this->db->fetchrow($inq)){ $style = (intval($item['temp_ban']) > 0) ? 'noactive' : 'work_lite'; print "<tr>\n"; print "<td align=\"center\" class=\"$style\">\n"; print "<font class=site>".$item['name']."</font>"; print "</td>\n"; print "<td align=\"center\" class=\"$style\">\n"; print format_time($item['joined'],0); print "</td>\n"; print "<td align=\"center\" class=\"$style\">\n"; print format_time($item['last_visit'],1); print "</td>\n"; print "<td align=\"center\" class=\"$style\">\n"; print "<a href=mailto:".$item['email'].">".$item['email']."</a>\n"; print "</td>\n"; print "<td align=\"center\" class=\"$style\">\n"; if(intval($item['temp_ban']) == 0){ print "<a href=\"user.php?dn=edit&uid=".$item['id']."&p=$p&nu=$nu&ops=$sess[hash]\"> <img alt=\"".$lang['all_edit']."\" src=\"temp/".$sess['skin']."/images/edit.gif\" border=\"0\"></a>\n"; print "<a href=\"user.php?dn=del&uid=".$item['id']."&p=$p&nu=$nu&ops=$sess[hash]\"> <img alt=\"".$lang['all_delet']."\" src=\"temp/".$sess['skin']."/images/del.gif\" border=\"0\"></a>\n"; } print "</td>\n"; print "</tr>\n"; } } // LIST // DEL function userdel($uid){ if($uid > 1){ $this->db->query("DELETE FROM ".$this->data['prefix']."members WHERE id='$uid'"); } } // DEL // BANDEL function bandel($uid){ } // BANDEL // BANADD function banadd($uid){ } // BANADD // USEREDIT function useredit($uid){ global $lang; if($uid > 0){ $item = $this->db->fetchrow($this->db->query("SELECT * FROM ".$this->data['prefix']."members WHERE id = '".$uid."'")); print "<table border=\"0\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" class=\"work\" align=\"center\">"; print "<tr><td class=\"work_title\" colspan=\"2\" align=\"center\">".$lang['edit_user']." ".$item['name']."</td></tr>\n"; print "<tr><td class=\"work_lite\" width=\"20%\" align=\"center\">"; print "<b>".$lang['login']." :</b></td>\n"; print "<td class=\"work_clip\" width=\"80%\" align=\"left\">"; print "".$item['name'].""; print "</td></tr>\n"; print "<tr><td class=\"work_lite\" width=\"20%\" align=\"center\"><b>E-Mail :</b>"; print "</td>\n"; print "<td class=\"work_clip\" width=\"80%\" align=\"left\">"; print "".$item['email'].""; print "</td></tr>\n"; } } // USEREDIT // USERSAVE function usersave($uid,$edit){ } // USERSAVE // ADMIN function messagelast($limit = 10, $target = '_blank'){ global $api,$lang; $inq = $this->db->query("SELECT id,password FROM ".$this->data['prefix']."forums"); $qe = ''; $re = ''; $ignore = array(); while($item = $this->db->fetchrow($inq)){ if($item['password']!=""){ $ignore[] = $item['id']; } } if(count($ignore) > 0){ $qe = " forum_id NOT IN (".implode(',',$ignore).") AND "; } $inq = $this->db->query("SELECT tid,title,posts,last_poster_id,last_post,last_poster_name,posts FROM ".$this->data['prefix']."topics WHERE (".$qe."state='open') ORDER BY last_post DESC LIMIT 0,$limit"); if($this->db->numrows($inq) > 0){ $re = "<table class=\"forum\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"> <tbody class=\"forumbody\"> <tr> <td class=\"forumtitle\" width=\"50%\">Тема</td> <td class=\"forumtitle\" style=\"text-align: left;\" width=\"30%\">".$lang['author']."</td> <td class=\"forumtitle\" style=\"text-align: left;\" width=\"10%\">".$lang['all_data']."</td> <td class=\"forumtitle\" style=\"text-align: center;\" width=\"10%\">Ответов</td> </tr> </tbody>"; while($item = $this->db->fetchrow($inq)){ $title = (strlen($item['title']) > 55) ? substr($item['title'],0,55)."..." : $item['title']; $topid = $item['tid']; //$forid = $item['forum_id']; $lasid = $item['last_poster_id']; $poster = $item['last_poster_name']; $re.= "<tr> <td class=\"forumtopic\"> <a target=\"".$target."\" href=\"forum/index.php?showtopic=".$topid."&view=getnewpost\" title=\"".$title."\">".$title."</a> </td> <td class=\"forumtopic\" align=\"left\"> <a target=\"".$target."\" href=\"forum/index.php?showuser=".$lasid."\">".$poster."</a> </td> <td class=\"forumtopic\" align=\"left\"> <span class=\"time\">".$api->sitetime($item['last_post'])."</span> </td> <td class=\"forumtopic\" align=\"center\"> <span class=\"time\">".$item['posts']."</span> </td> </tr>"; } $re.="</table>"; } return $re; } # } ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.