session.php
上传用户:snow1005
上传日期:2015-11-10
资源大小:3151k
文件大小:6k
源码类别:

Ajax

开发平台:

JavaScript

  1. <?php
  2. /*
  3.  * qWikiOffice Desktop 0.8.1
  4.  * Copyright(c) 2007-2008, Integrated Technologies, Inc.
  5.  * licensing@qwikioffice.com
  6.  * 
  7.  * http://www.qwikioffice.com/license
  8.  */
  9. class session {
  10. private $os;
  11. public function __construct($os){
  12. $this->os = $os;
  13. }
  14. /** get_id() Returns the id of the current session.
  15.   *
  16.   * @access private
  17.   **/
  18. public function get_id(){
  19. if(isset($_COOKIE["sessionId"])){
  20. return $_COOKIE["sessionId"];
  21. }else{
  22.     return null;
  23. }
  24. } // end get_id()
  25. /** get_member_id() Returns the id of member from the current session.
  26.   *
  27.   * @param $session_id string
  28.   **/
  29. public function get_member_id(){
  30. $response = '';
  31. $session_id = $this->get_id();
  32. if($session_id != ""){
  33. $sql = "select
  34. qo_members_id as id
  35. from
  36. qo_sessions
  37. where
  38. id = '".$session_id."'";
  39. if(mysql_num_rows($result = mysql_query($sql)) > 0){
  40. $row = mysql_fetch_assoc($result);
  41. $response = $row['id'];
  42. }
  43. }
  44. return $response;
  45. } // end get_member_id()
  46. /** get_group_id() Returns the member's group id for this session.
  47.   * 
  48.   * @access public
  49.   * @param $member_id
  50.   **/
  51. public function get_group_id(){
  52. $response = '';
  53. $session_id = $this->get_id();
  54. if($session_id != ""){
  55. $sql = "select
  56. qo_groups_id as id
  57. from
  58. qo_sessions
  59. where
  60. id = '".$session_id."'";
  61. if(mysql_num_rows($result = mysql_query($sql)) > 0){
  62. $row = mysql_fetch_assoc($result);
  63. $response = $row['id'];
  64. }
  65. }
  66. return $response;
  67. } // end get_group_id()
  68. /** get_group_name() Returns the member's group name for this session.
  69.   *
  70.   * @access public
  71.   **/
  72. public function get_group_name(){
  73. $response = '';
  74. $group_id = $this->get_group_id();
  75. if($group_id != ""){
  76. $sql = "SELECT
  77. name
  78. FROM
  79. qo_groups
  80. WHERE
  81. id = ".$group_id;
  82. if(mysql_num_rows($result = mysql_query($sql)) > 0){
  83. $row = mysql_fetch_assoc($result);
  84. $response = $row['name'];
  85. }
  86. }
  87. return $response;
  88. } // end get_group_name()
  89. /** exists()
  90.   *
  91.   * @param $session_id string
  92.   **/
  93. function exists($session_id=""){
  94. $response = false;
  95. $session_id = $session_id != "" ? $session_id : $this->get_id();
  96. if($session_id != ""){
  97. // query the db for the session id
  98. $sql = "select
  99. qo_members_id
  100. from
  101. qo_sessions
  102. where
  103. id = '".$session_id."'";
  104. // if a record is found, they are logged in
  105. if(mysql_num_rows($result = mysql_query($sql)) > 0) {
  106. $response = true;
  107. }
  108. }
  109. return $response;
  110. } // end exists()
  111. /** login()
  112.   * 
  113.   * @access public
  114.   * @param $module string
  115.   * @param $user string
  116.   * @param $pass string 
  117.   **/
  118. public function login($user, $pass, $group_id=""){
  119. $response = "{success: false}";
  120. if(!isset($user)||!strlen($user)){
  121. $response = "{errors:[{id:'user', msg:'Required Field'}]}";
  122. }elseif(!isset($pass)||!strlen($pass)){
  123. $response = "{errors:[{id:'pass', msg:'Required Field'}]}";
  124. }else if(!$this->os->member->exists($user)){
  125. $response = "{errors:[{id:'user', msg:'User not found'}]}";
  126. }else if(!$this->os->member->is_active($user)){
  127. $response = "{errors:[{id:'user', msg:'This account is not active'}]}";
  128. }else{
  129. // check password
  130. $sql = "SELECT
  131. id,
  132. email_address
  133. FROM
  134. qo_members
  135. WHERE
  136. email_address = '".$user."'
  137. AND
  138. password = '".$pass."'";
  139. if(mysql_num_rows($result = mysql_query($sql)) < 1){
  140. $response = "{errors:[{id:'pass', msg:'Incorrect Password'}]}";
  141. }else{
  142. // successful login, check for groups
  143. // get member id
  144. $row = mysql_fetch_assoc($result);
  145. $member_id = $row['id'];
  146. // if group id was not supplied
  147. if($group_id == ""){
  148. // get members active groups
  149. $sql = "SELECT
  150. G.id,
  151. G.name
  152. FROM
  153. qo_groups_has_members GM
  154. -- Groups Join --
  155. INNER JOIN qo_groups AS G ON G.id = GM.qo_groups_id AND G.active = 1
  156. WHERE
  157. qo_members_id = ".$member_id."
  158. ORDER BY
  159. G.name";
  160. $result = mysql_query($sql);
  161. if(mysql_num_rows($result = mysql_query($sql)) > 1){
  162. $groups = array();
  163. while($row = mysql_fetch_assoc($result)){
  164. $groups[] = $row;
  165. }
  166. $response = "{success:true, groups: ".json_encode($groups)."}";
  167. }else{
  168. $row = mysql_fetch_assoc($result);
  169. // log member in with this group id
  170. $group_id = $row["id"];
  171. }
  172. }
  173. // if group id was supplied
  174. if($group_id != ""){
  175. /* delete existing session
  176. $sql = "DELETE FROM
  177. qo_sessions
  178. WHERE
  179. qo_members_id = ".$member_id;
  180. if(!mysql_query($sql)){
  181. $response = "{errors:[{id:'user', msg:'Login Failed'}]}";
  182. }else{ */
  183. // get our random session id
  184. $session_id = $this->os->build_random_id();
  185. // save temporary session id to our db
  186. $sql = "INSERT INTO qo_sessions (
  187. qo_members_id,
  188. qo_groups_id,
  189. id,
  190. ip,
  191. date
  192. ) VALUES (
  193. ".$member_id.",
  194. ".$group_id.",
  195. '".$session_id."',
  196. '".$_SERVER['REMOTE_ADDR']."',
  197. '".date("Y-m-d H:i:s")."')";
  198. // attempt to save login session
  199. if(!mysql_query($sql)){
  200. $response = "{errors:[{id:'user', msg:'Login Failed'}]}";
  201. }else{
  202. // successful login
  203. $response = "{success:true, sessionId:'".$session_id."'}n";
  204. }
  205. //}
  206. }
  207. }
  208. }
  209. return $response;
  210. } // end login()
  211. /** logout()
  212.   *
  213.   * @access public
  214.   **/
  215. public function logout(){
  216. $session_id = $this->get_id();
  217. if(isset($session_id)){
  218. $sql = "delete
  219. from
  220. qo_sessions
  221. where
  222. id = '".$session_id."'";
  223. if(mysql_query($sql)){
  224. session_destroy();
  225. // clear the cookie
  226. setcookie("sessionId", "");
  227.     // redirect to login page
  228. header('Location: '.$this->os->get_login_url());
  229. }
  230. }
  231. } // end logout()
  232. }
  233. ?>