A lightweight forum engine written in PHP. Repository is now obsolete and read-only. http://www.pioder.pl/uforum.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
5.9 KiB

  1. <?php
  2. /**
  3. * @package uForum
  4. * @file login.php
  5. * @version $Id$
  6. * @copyright 2007-2010 (c) PioDer <pioder@wp.pl>
  7. * @link http://www.pioder.pl/
  8. * @license see LICENSE.txt
  9. **/
  10. define('IN_uF', true);
  11. //include files
  12. require('./config.php');
  13. require('./includes/constants.php');
  14. require('./includes/db.php');
  15. require('./includes/errors.php');
  16. //connect to database
  17. DataBase::db_connect();
  18. require('./includes/sessions.php');
  19. require('./includes/classes/class_user.php');
  20. require('./common.php');
  21. require('./includes/emailer.php');
  22. require('./includes/misc_functions.php');
  23. $default_lang = DefaultLang();
  24. require('./lngs/'.$default_lang.'/main.php');
  25. require('./lngs/'.$default_lang.'/email.php');
  26. require('./includes/classes/secure.php');
  27. $start = TimeGeneration();
  28. SessDelInvalid();
  29. SessRegister();
  30. SessDeleteOld();
  31. foreach ($_POST as $name => $value)
  32. {
  33. if ($forum_config['use_censorlist'])
  34. {
  35. $_POST[$name] = Secure::UseCensorlist($value);
  36. }
  37. }
  38. if (isset($_GET['mode']))
  39. {
  40. switch($_GET['mode'])
  41. {
  42. case 'logout':
  43. {
  44. if ($_SESSION['uid']==0)
  45. {
  46. header('Location: index.php');
  47. }
  48. $uid = $_SESSION['uid'];
  49. $_SESSION['uid']=0;
  50. $_SESSION['sessionid']='0';
  51. SessDelete($uid);
  52. $stop = TimeGeneration();
  53. message_forum($lng['islogout'], 'index.php');
  54. break;
  55. }
  56. case 'login':
  57. {
  58. $default_skin = ViewSkinName();
  59. if ($_SESSION['uid']>0)
  60. {
  61. header('Location: index.php');
  62. }
  63. if (isset($_POST['user']))
  64. {
  65. $user = strip_tags(addslashes($_POST['user']));
  66. $pass = md5(strip_tags($_POST['pass']));
  67. $sql = "SELECT `u_id`, `nick`, `pass` FROM `".USERS_TABLE."` WHERE nick='$user'";
  68. $query = DataBase::sql_query($sql,GENERAL,'Could not obtain user inforamtion');
  69. $result = DataBase::fetch($query);
  70. $nick = $result['nick'];
  71. if ($result['nick']==$user)
  72. {
  73. if ($result['u_id']!='-1')
  74. {
  75. if($pass==$result['pass'])
  76. {
  77. $user_id = $result['u_id'];
  78. $sql = "DELETE FROM `".SESSIONS_TABLE."` WHERE `u_id`='$user_id'";
  79. DataBase::sql_query($sql,GENERAL,'Could not delete session.');
  80. if (User::UserInformation($user_id,'active')==0)
  81. {
  82. SessDelete($_SESSION['uid']);
  83. $_SESSION['uid']='0';
  84. message_forum($lng['account_disabled'],'index.php');
  85. }
  86. $ssid = md5($_SERVER['REQUEST_TIME'].'donothackthiscriptplease!');//session identifier
  87. $_SESSION['uid']=$user_id;
  88. $_SESSION['sessionid']=$ssid;
  89. //session register
  90. $sql = "INSERT INTO `".SESSIONS_TABLE."` VALUES ('', '".$_COOKIE[SESS_NAME]."','$user_id','".$_SERVER['REQUEST_TIME']."')";//query
  91. DataBase::sql_query($sql,GENERAL,'Could not add new session.');//run query
  92. //next...
  93. $sql = "UPDATE `".USERS_TABLE."` SET lastvisit='".$_SERVER['REQUEST_TIME']."' WHERE u_id='$user_id'";//update lastvisit for user
  94. DataBase::sql_query($sql,GENERAL,'Could not update user lastvisit');//run query
  95. $msg = $lng['youareloggedas'].': <b>'.$nick.'</b>';// messaage "login as.."
  96. $stop = TimeGeneration();//generate generation's time
  97. message_forum($msg, 'index.php');//message and require to index.php
  98. }
  99. else
  100. {
  101. $msg = '<br><div align="center" style="width:100%"><span class="fsmall" style="color: red"><b>'.$lng['invalidpass'].'</b></span></div>';
  102. }
  103. }
  104. else
  105. {
  106. message_forum('Access denied.','index.php');
  107. }
  108. }
  109. else
  110. {
  111. $msg = '<br><div align="center" style="width:100%"><span class="fsmall" style="color: red"><b>'.$lng['invalidlogin'].'</b></span></div>';
  112. }
  113. }
  114. else
  115. {
  116. $msg = '';
  117. $_POST['user']='';
  118. }
  119. $skin = array(
  120. 'lforumname' => $lng['forumname'],
  121. 'user' => $lng['user'],
  122. 'lpass' => $lng['lpassw'],
  123. 'lforgotpass' => $lng['lforgot_pass'],
  124. 'llog_in'=> $lng['llog_in'],
  125. 'msg' => $msg
  126. );
  127. $skin = array_push_assoc($skin, GenerateHeader($lng['llogin'], '<a href="login.php?mode=login" class="navigator">'.$lng['llogin']));
  128. require('./skins/'.$default_skin.'/overall_header.tpl');
  129. require('./skins/'.$default_skin.'/login_body.tpl');
  130. $stop = TimeGeneration();
  131. $skin['queries'] = ShowQueries($start, $stop);
  132. require('./skins/'.$default_skin.'/overall_footer.tpl');
  133. break;
  134. }
  135. case 'forgotpassword':
  136. {
  137. if ($_SESSION['uid']>0)
  138. {
  139. header('Location: index.php');
  140. }
  141. $default_skin = ViewSkinName();
  142. if (!$forum_config['allow_send_email'])
  143. {
  144. message_forum($lng['no_send_newpass'],'index.php');
  145. }
  146. if (isset($_POST['username']))
  147. {
  148. $uid = User::UserIdByNick(htmlspecialchars($_POST['username']));
  149. if (User::UserInformation($uid,'email')!='')
  150. {
  151. $int_rand = rand(1, (strlen(PASSWD_HASH)-$forum_config['newpasswd_len']));
  152. $newpass = substr(PASSWD_HASH, $int_rand, $forum_config['newpasswd_len']);
  153. User::UpdatePassword($uid, md5($newpass));
  154. SendForgotPassEmail($newpass);
  155. message_forum($lng['pass_changed'],'index.php');
  156. }
  157. else
  158. {
  159. message_forum($lng['no_user'],$_SERVER['REQUEST_URI']);
  160. }
  161. }
  162. $skin = array(
  163. 'user' => $lng['user'],
  164. 'lsave' => $lng['save'],
  165. 'pa_link'=>''
  166. );
  167. $skin = array_push_assoc($skin, GenerateHeader($lng['lforgot_pass2'], '<a href="'.$_SERVER['REQUEST_URI'].'" class="navigator">'.$lng['lforgot_pass2']));
  168. require('./skins/'.$default_skin.'/overall_header.tpl');
  169. require('./skins/'.$default_skin.'/newpass_body.tpl');
  170. $stop = TimeGeneration();
  171. $skin['queries'] = ShowQueries($start, $stop);
  172. require('./skins/'.$default_skin.'/overall_footer.tpl');
  173. break;
  174. }
  175. default:
  176. {
  177. $stop = TimeGeneration();
  178. message_forum($lng['invalidmode'], 'index.php');
  179. }
  180. }
  181. }
  182. else
  183. {
  184. $stop = TimeGeneration();
  185. message_forum($lng['invalidmode'], 'index.php');
  186. }
  187. ?>