BaseController.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <?php
  2. /**
  3. * 核心控制
  4. * @author cp
  5. */
  6. class BaseController {
  7. public $userinfo;
  8. function __construct() {
  9. }
  10. /**
  11. * 后台登录
  12. */
  13. function admin_init(){
  14. //是否已经登录纵横
  15. $rs=array();
  16. if (isset ( $_COOKIE ['auth_main'] )) {
  17. //$userinfo = authcode ( $_COOKIE ['auth'] );
  18. $userinfo=authcode ($_COOKIE ['auth_main']);
  19. //
  20. // if($login_user!=$userinfo){
  21. // header ( 'Content-Type:text/html;charset=utf-8' );
  22. // @header ( "Location: " . WEB_SITE . "/messager?content=请重新纵横&url=/login" );
  23. // }
  24. // require_once (SITE_PATH . '/protected/plugin/client.php');
  25. //
  26. // $client = new client ( ZHSSO );
  27. //
  28. // $userinfo = authcode ( $_COOKIE ['auth_main'] );
  29. //
  30. // $sso_info = $client->zhsso_getUserbyName ( $userinfo );
  31. //
  32. // $sso_info=explode("\r",$sso_info);
  33. //
  34. // $ts = json_decode ( $sso_info['1'], true );
  35. //
  36. $this->userinfo=$this->_get_userinfo_by_username ( $userinfo );
  37. }else{
  38. Doo::loadCore ( 'uri/DooUriRouter' );
  39. $router = new DooUriRouter ();
  40. $routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
  41. if($routeRs['1']=="login"||$routeRs['1']=="do_login"){
  42. }else{
  43. setcookie ( "auth_main", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );die;
  44. }
  45. }
  46. //$this->userinfo = array ('uid' => '2','groupid'=>'1', 'username' => "kakachen", "password" => "123456", "credit3","email" => "529868749@qq.com", "avatar" => "/global/img/avatarNormal.png" );
  47. if (empty ( $this->userinfo )) {
  48. //跳转前台登录
  49. define ( "MASTER_ID", 0 );
  50. //header ( 'Content-Type:text/html;charset=utf-8' );
  51. //@header ( "Location: " . WEB_SITE . "/messager?content=请登录纵横&url=/login" );
  52. } else {
  53. $message_count = $this->_sys_message_count ( $this->userinfo ['uid'] );
  54. define ( "MASTER_ID", $this->userinfo ['uid'] );
  55. define ( 'MEMBER_NAME', $this->userinfo ['username'] );
  56. define ( 'MEMBER_AVATAR', $this->userinfo ['avatar'] );
  57. define ( "MESSAGE_COUNT", $message_count ['count'] );
  58. define('EMAIL',$this->userinfo['email']);
  59. define("CREDIT3", 0);
  60. $group=$this->_get_group_by_id($this->userinfo ['groupid']);
  61. //有BUG 应该判断用户组
  62. if ($group['grouptype'] == 1 ) {
  63. include SITE_PATH . 'protected/config/admin_menu.conf.php';
  64. $rs['menu']= $menu;
  65. $rs['userinfo']=$this->userinfo;
  66. //判断是否已经登录--读取sessiong
  67. return $rs;
  68. } else {
  69. setcookie ( "auth_main", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  70. //无权限进入后台
  71. header ( 'Content-Type:text/html;charset=utf-8' );
  72. @header ( "Location: " . WEB_SITE . "/messager?content=无权进入后台&url=/" );
  73. }
  74. }
  75. }
  76. /**
  77. * 持续认证
  78. */
  79. function init(){
  80. //初始化信息
  81. Doo::loadCore ( 'uri/DooUriRouter' );
  82. $router = new DooUriRouter ();
  83. $routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
  84. //是否有登录信息
  85. if (isset ( $_COOKIE ['auth'] )) {
  86. require_once (SITE_PATH . '/protected/plugin/client.php');
  87. $client = new client ( ZHSSO );
  88. //还需要加入权限
  89. $userinfo = authcode ( $_COOKIE ['auth'] );
  90. $sid = $_COOKIE ['sid'];
  91. $sso_info = $client->zhsso_getUserbyName ( $userinfo );
  92. $sso_info=explode("\r",$sso_info);
  93. $ts = json_decode ( $sso_info['0'], true );
  94. $this->userinfo = $this->_get_userinfo_by_username ( $userinfo );
  95. $this->userinfo['credit3']=$ts[0]['bank'];
  96. $this->userinfo['email']=$ts[0]['useremail'];
  97. $route_group="GENERAL_USER";
  98. if(!empty($this->userinfo)){
  99. if($this->userinfo['groupid']==99)
  100. $route_group="VIP_USER";
  101. }
  102. //持续状态认证
  103. if (! $this->_init_login ( $routeRs, $route_group )) {
  104. if($routeRs['1']=="show_advisory"){
  105. header ( 'Content-Type:text/html;charset=utf-8' );
  106. header ( "Location: " . WEB_SITE . "/show_tip2" );
  107. }else{
  108. header ( 'Content-Type:text/html;charset=utf-8' );
  109. @header ( "Location: " . WEB_SITE . "/messager?content=权限不足,请联系管理员&url=/" );
  110. }
  111. }elseif (empty ( $this->userinfo )){
  112. setcookie ( "auth", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  113. setcookie ( "sid", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  114. setcookie ( "tuid", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  115. header ( 'Content-Type:text/html;charset=utf-8' );
  116. @header ( "Location: " . WEB_SITE . "/messager?content=请确认已经登录后操作&url=/login" );
  117. }
  118. //持续检测登录异常状态
  119. if (! $this->_login_authenticate ( $sid )) {
  120. Doo::loadModel ( 'MessageDao' );
  121. $messagedao = new MessageDao ();
  122. $subject = "你的账号发生异常登录";
  123. $content = "您的账号发生异常登录,请检查账号安全。";
  124. $messagedao->send_message ( ADMIN_NAME, 0, $this->userinfo ['uid'], $subject, $content,2 );
  125. setcookie ( "auth", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  126. setcookie ( "sid", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  127. setcookie ( "tuid", "", time () + 3600 * 24, "/", COOKIE_WEB_SITE );
  128. header ( 'Content-Type:text/html;charset=utf-8' );
  129. @header ( "Location: " . WEB_SITE . "/messager?content=登录发生异常,请重新登陆&url=/login" );
  130. }
  131. $message_count = $this->_sys_message_count ( $this->userinfo ['uid'] );
  132. if($message_count['count']>10)
  133. $message_count['count']="10+";
  134. $tuid = $_COOKIE ['tuid'];
  135. //$avatar = $client->ps_getavatar ( $tuid );
  136. $avatar=json_decode($this->userinfo['avatar'],true);
  137. //print_r($avatar);echo $this->userinfo['avatar'];
  138. if (empty ( $avatar )){
  139. $avatar[30] = DEF_AVATAR;$avatar[45] = DEF_AVATAR;$avatar[90] = DEF_AVATAR;$avatar[180] = DEF_AVATAR;
  140. }
  141. define ( "MASTER_ID", $this->userinfo ['uid'] );
  142. define ( 'MEMBER_NAME', $this->userinfo ['username'] );
  143. define ( 'CREDIT3', $this->userinfo['credit3'] );
  144. define ( 'SSO_UID', $ts[0]['id'] );
  145. define('EMAIL',$this->userinfo['email']);
  146. define ( 'MEMBER_AVATAR_30', $avatar[30] );
  147. define ( 'MEMBER_AVATAR_45', $avatar[45] );
  148. define ( 'MEMBER_AVATAR_90', $avatar[90] );
  149. define ( 'MEMBER_AVATAR_180', $avatar[180] );
  150. define ( "MESSAGE_COUNT", $message_count ['count'] );
  151. } else {
  152. //未登陆不容许浏览
  153. if (! $this->_init_login ( $routeRs, "VISITOR_USER" )) {
  154. header ( 'Content-Type:text/html;charset=utf-8' );
  155. @header ( "Location: " . WEB_SITE . "/messager?content=请确认已经登录后操作&url=/login" );
  156. return false;
  157. }
  158. }
  159. $this->userinfo['$routeRs']=$routeRs;
  160. return $this->userinfo;
  161. }
  162. /**
  163. * 持续认证
  164. */
  165. private function _login_authenticate($sid = "") {
  166. Doo::loadModel ( 'SessionDao' );
  167. Doo::loadModel ( 'UserlogDao' );
  168. $sessiondao = new SessionDao ();
  169. $Userlogdao = new UserlogDao ();
  170. $rs = $sessiondao->get_seesion ( $sid );
  171. if (empty ( $rs ))
  172. return false;
  173. $time = get_date ();
  174. //会话过期-删除
  175. if ($time > $rs ['lifetime']) {
  176. $sessiondao->sid = $sid;
  177. $this->db ()->delete ( $sessiondao->sid );
  178. setcookie ( "auth", "", time () + (3600 * 24), "/", COOKIE_WEB_SITE );
  179. setcookie ( "sid", "", time () + (3600 * 24), "/", COOKIE_WEB_SITE );
  180. return false;
  181. }
  182. //登录ip出现异常
  183. $ip = client_ip ();
  184. if ($ip != $rs ['ip']) {
  185. $action = $Userlogdao->set_USER_LOGINIP_EXCEPTIONAL ( $ip );
  186. $Userlogdao->set_userlog ( $rs ['uid'], $rs ['username'], $action, $ip );
  187. return true;
  188. }
  189. return true;
  190. }
  191. /**
  192. * 获取用户信息
  193. */
  194. private function _get_userinfo_by_username($username = "") {
  195. Doo::loadModel ( 'UserDao' );
  196. $userdao = new UserDao ();
  197. $rs = $userdao->get_users_by_name ( $username );
  198. return $rs;
  199. }
  200. /**
  201. * 获取用户信息
  202. */
  203. public function _get_group_by_id($id = "") {
  204. Doo::loadModel ( 'GroupDao' );
  205. $groupDao = new GroupDao ();
  206. $rs = $groupDao->get_group_by_id($id) ;
  207. return $rs;
  208. }
  209. /**
  210. * 获取系统消息条数
  211. */
  212. private function _sys_message_count($uid = 0) {
  213. Doo::loadModel ( 'MessageDao' );
  214. $messagedao = new MessageDao ();
  215. $rs = $messagedao->get_message_count_by_touid ( $uid );
  216. return $rs;
  217. }
  218. /**
  219. * 用户登录统一判断-容许未登陆可以预览的页面
  220. */
  221. private function _init_login($routeRs = array(), $user_type = "VISITOR_USER") {
  222. $rt = false;
  223. //用户角色
  224. if ($user_type == "VISITOR_USER") {
  225. if (in_array ( $routeRs [1], DOO::conf ()->VISITOR_USER ))
  226. $rt = true;
  227. } elseif ($user_type == "GENERAL_USER") {
  228. if (in_array ( $routeRs [1], DOO::conf ()->GENERAL_USER )){
  229. $rt = true;
  230. }
  231. }elseif ($user_type == "VIP_USER"){
  232. if (in_array ( $routeRs [1], DOO::conf ()->VIP_USER )){
  233. $rt = true;
  234. }
  235. }
  236. return $rt;
  237. }
  238. }
  239. ?>