PageRenderTime 60ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/Auth_stu.php

https://bitbucket.org/krishna2793/aces
PHP | 198 lines | 154 code | 22 blank | 22 comment | 18 complexity | ec73c428a0d586a11fccd83bdcf82484 MD5 | raw file
  1. <?php
  2. class Auth_stu
  3. {
  4. private $siteKey;
  5. public function connect()
  6. {
  7. $con = mysql_connect('localhost','root','mysql');
  8. if (!$con)
  9. {
  10. die('Could not connect: ' . mysql_error());
  11. }
  12. // make userdata the current db
  13. $db_selected = mysql_select_db('aces', $con);
  14. if (!$db_selected)
  15. {
  16. die ('Can\'t use userdata : ' . mysql_error());
  17. }
  18. return $con;
  19. }
  20. public function disconnect($con)
  21. {
  22. mysql_close($con);
  23. }
  24. public function __construct()
  25. {
  26. $this->siteKey = 'adsvdsugygabhbbdh2767';
  27. }
  28. public function randomString($length = 50)
  29. {
  30. $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
  31. $string = "";
  32. for ($p = 0; $p < $length; $p++)
  33. {
  34. $string .= $characters[mt_rand(0, strlen($characters)-1)];
  35. }
  36. return $string;
  37. }
  38. protected function hashData($data)
  39. {
  40. return hash_hmac('sha512', $data, $this->siteKey);
  41. }
  42. public function createUser($reg_id, $name, $password, $address,$con,$batch,$dept,$gender,$dob)
  43. {
  44. //Generate users salt
  45. $user_salt = $this->randomString();
  46. //Salt and Hash the password
  47. $password = $user_salt . $password;
  48. $password = $this->hashData($password);
  49. //Create verification code
  50. $code = $this->randomString();
  51. //Commit values to database here.
  52. $db=$this->connect();
  53. $query="INSERT into stu(stu_id,user_salt,name,p,address,contact,batch,department,gender,dob) values('$reg_id','$user_salt','$name', '$password', '$address','$con','$batch','$dept','$gender','$dob')" ;
  54. $created = mysql_query($query)or die("no use".mysql_error());
  55. $this->disconnect($db);
  56. if($created != false)
  57. {
  58. return true;
  59. }
  60. return false;
  61. }
  62. public function login($reg_id, $password)
  63. {
  64. //Select users row from database base on $reg_id
  65. $db=$this->connect();
  66. $result = mysql_query("SELECT * FROM stu WHERE stu_id = '$reg_id'");
  67. if (!$result)
  68. {
  69. echo 'Could not run query: ' . mysql_error();
  70. exit;
  71. }
  72. $selection = mysql_fetch_array($result);
  73. //Salt and hash password for checking
  74. $password = $selection['user_salt'] . $password;
  75. $password = $this->hashData($password);
  76. //Check reg_id and password hash match database row
  77. $match=((strcmp($selection['p'],$password))==0);
  78. if($match == true)
  79. {
  80. //reg_id/Password combination exists, set sessions
  81. //First, generate a random string.
  82. $random = $this->randomString();
  83. //Build the token
  84. $token = $_SERVER['HTTP_USER_AGENT'] . $random;
  85. $token = $this->hashData($token);
  86. //Setup sessions vars
  87. session_start();
  88. $_SESSION['token'] = $token;
  89. $_SESSION['user_id'] = $selection['id'];
  90. $_SESSION['role'] = 'student';
  91. $_SESSION['name'] = $selection['name'];
  92. //Update old logged_in_member records for user
  93. $kp = mysql_query("select * from logged_in_stu where user_id ='$_SESSION[user_id]'");
  94. if(mysql_num_rows($kp)==1)
  95. {
  96. $sid=session_id();
  97. $update = mysql_query("UPDATE logged_in_stu SET session_id='$sid',token='$token' WHERE user_id = '$_SESSION[user_id]'");
  98. if ($update)
  99. {
  100. $this->disconnect($db);
  101. return true;
  102. }
  103. }
  104. else
  105. {
  106. $sid=session_id();
  107. //Insert new logged_in_member record for user
  108. $inserted = mysql_query("INSERT into logged_in_stu(user_id,session_id,token) values('$_SESSION[user_id]','$sid','$token') ");
  109. if ($inserted)
  110. {
  111. $this->disconnect($db);
  112. return true;
  113. }
  114. }
  115. }
  116. return false;
  117. }
  118. public function logout()
  119. {
  120. $db=$this->connect();
  121. $delete = mysql_query("DELETE from logged_in_stu WHERE user_id = '$_SESSION[user_id]'");
  122. $this->disconnect($db);
  123. session_unset();
  124. session_destroy();
  125. return $delete;
  126. }
  127. public function checkSession()
  128. {
  129. //Select the row
  130. $db=$this->connect();
  131. $result = mysql_query("SELECT * FROM logged_in_stu WHERE user_id = '$_SESSION[user_id]'");
  132. if (!$result)
  133. {
  134. echo 'Could not run query: ' . mysql_error();
  135. exit;
  136. }
  137. $selection = mysql_fetch_array($result);
  138. if($selection)
  139. {
  140. //Check ID and Token
  141. if(session_id() == $selection['session_id'] && $_SESSION['token'] == $selection['token'])
  142. {
  143. //Id and token match, refresh the session for the next request
  144. $this->refreshSession();
  145. $this->disconnect($db);
  146. return true;
  147. }
  148. }
  149. $this->disconnect($db);
  150. return false;
  151. }
  152. private function refreshSession()
  153. {
  154. //Regenerate id
  155. session_regenerate_id();
  156. //Regenerate token
  157. $random = $this->randomString();
  158. //Build the token
  159. $token = $_SERVER['HTTP_USER_AGENT'] . $random;
  160. $token = $this->hashData($token);
  161. //Store in session
  162. $_SESSION['token'] = $token;
  163. //update logged_in_member table
  164. $sid=session_id();
  165. $update = mysql_query("UPDATE logged_in_stu SET session_id='$sid',token='$token' WHERE user_id = '$_SESSION[user_id]'");
  166. if ($update)
  167. {
  168. return true;
  169. }
  170. }
  171. public function __toString()
  172. {
  173. return $this->siteKey;
  174. }
  175. }
  176. ?>