Просмотр файла include/auth.php

Размер файла: 15.44Kb
  1. <?php
  2. $auth = '';
  3. if(empty($_POST['au']))
  4. {
  5. $title = "Авторизация";
  6. if($version == "wml")
  7. {
  8. header("Content-type: text/vnd.wap.wml; charset=utf-8");
  9. header("Cache-Control: no-cache");
  10. echo(doctype("Авторизация").'
  11. Имя: <br />
  12. <input type="text" name="name" /><br />
  13. Пароль: <br />
  14. <input type="password" name="password" /><br />');
  15. if($fcode){
  16. $pik = array('1','2','3','4','5','6','7','8','9','0');
  17. $code = $pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)];
  18. $code = htmlspecialchars($code);
  19. fwrite(fopen('./codes/'.$ref.'.txt', 'w'), $code);
  20. echo('Введите код <b>'.$code.'</b>:<br /><input type="text" name="code" value="" maxlenght="5" size="5" /><br />');
  21. }
  22. echo('<anchor>[Авторизоваться]
  23. <go href="./?p=19&amp;v=wml&amp;rnd='.$ref.'" method="post">
  24. <postfield name="name" value="$(name)" />
  25. <postfield name="password" value="$(password)" />
  26. <postfield name="code" value="$(code)" />
  27. <postfield name="au" value="true" />
  28. </go></anchor><br />
  29. --- <br />
  30. <a href="./?p=0&amp;v=wml">Форумы</a><br />
  31. </p></card></wml>');
  32. } else
  33. {
  34. header("Content-type: text/html; charset=utf-8");
  35. header("Last-Modified:".gmdate("D, d M Y H:i:s")." GMT");
  36. header("Cache-Control: no-cache, must-relative");
  37. echo('<html>
  38. <head>
  39. <title>'.$title.'</title>
  40. </head>
  41. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  42. <form action="./?p=19&amp;v=xhtml&amp;rnd='.$ref.'" method="post">
  43. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  44. <tr align="center" bgcolor="'.$style['title'].'"><td colspan="2">
  45. <font color="#FFFFFF"><b>'.$title.'</b>
  46. </font></td></tr>');
  47. echo('<tr bgcolor="'.$style['text'].'"><td>
  48. Имя:</td><td><input type="text" name="name" /></td></tr>
  49. <tr bgcolor="'.$style['text'].'"><td>
  50. Пароль:</td><td><input type="password" name="password" /></td></tr>');
  51. if($fcode){
  52. $pik = array('1','2','3','4','5','6','7','8','9','0');
  53. $code = $pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)].$pik[rand(0, 10)];
  54. $code = htmlspecialchars($code);
  55. fwrite(fopen('./codes/'.$ref.'.txt', 'w'), $code);
  56. echo('<tr bgcolor="'.$style['text'].'"><td>Введите код <b>'.$code."</b>:</td><td><input type=\"text\" name=\"code\" value=\"\" maxlenght=\"5\" size=\"5\" /></td></tr>");
  57. }
  58. echo('<tr bgcolor="'.$style['text'].'"><td align="center" colspan="2">
  59. <input type="hidden" name="au" value="true" />
  60. <input type="hidden" name="v" value="xhtml" />
  61. <input type="submit" value="Авторизоваться" />
  62. </td></tr>
  63. <tr bgcolor="'.$style['bottom'].'"><td colspan="2">
  64. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  65. </td></tr></table>
  66. </form>
  67. </body></html>');
  68. }
  69. } else
  70. {
  71. include_once("users.php");
  72. if($fcode){
  73. $code = file_get_contents("./codes/".$_GET['rnd'].".txt");
  74. $_POST['code'] = htmlspecialchars($_POST['code']);
  75. }
  76. $_POST['name'] = translatenick(trim(chop(sql($_POST['name']))));
  77. $_POST['password'] = trim(chop(sql($_POST['password'])));
  78. if(empty($_POST['name']) or empty($_POST['password']))
  79. {
  80. $title = "Ошибка";
  81. if($version == "wml")
  82. {
  83. header("Content-type: text/vnd.wap.wml; charset=utf-8");
  84. header("Cache-Control: no-cache");
  85. echo(doctype($title).'
  86. Вы не заполнили все поля! <br />
  87. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  88. </p></card></wml>');
  89. } elseif($version == "xhtml")
  90. {
  91. echo('<html>
  92. <head>
  93. <title>'.$title.'</title>
  94. </head>
  95. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  96. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  97. <tr><td align="center" bgcolor="'.$style['title'].'">
  98. <font color="#FFFFFF"><b>'.$title.'</b></font>
  99. </td></tr>
  100. <tr bgcolor="'.$style['text'].'"><td>
  101. Вы не заполнили все поля!
  102. </td></tr>
  103. <tr><td bgcolor="'.$style['bottom'].'">
  104. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  105. </td></tr>
  106. </table></body></html>');
  107. }
  108. }
  109. elseif((empty($_POST['code']) or $_POST['code'] != $code) and $fcode)
  110. {
  111. unlink('./codes/'.$_GET['rnd'].'.txt');
  112. $title = "Ошибка";
  113. if($version == "wml")
  114. {
  115. header("Content-type: text/vnd.wap.wml; charset=utf-8");
  116. header("Cache-Control: no-cache");
  117. echo(doctype($title).'
  118. Неправильный код! <br />
  119. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  120. </p></card></wml>');
  121. } elseif($version == "xhtml")
  122. {
  123. echo('<html>
  124. <head>
  125. <title>'.$title.'</title>
  126. </head>
  127. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  128. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  129. <tr><td align="center" bgcolor="'.$style['title'].'">
  130. <font color="#FFFFFF"><b>'.$title.'</b></font>
  131. </td></tr>
  132. <tr bgcolor="'.$style['text'].'"><td>
  133. Неправильный код!
  134. </td></tr>
  135. <tr><td bgcolor="'.$style['bottom'].'">
  136. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  137. </td></tr>
  138. </table></body></html>');
  139. }
  140. }
  141. elseif(!preg_match("|^[<>@\[\] =#!?\*-\.\_0-9a-zA-Zа-яА-Я]+$|u", $_POST['name']) or strlen($_POST['name']) > 15)
  142. {
  143. $title = "Ошибка";
  144. if($version == "wml")
  145. {
  146. echo(doctype($title).'
  147. Ник может содержать только знаки русского и латинского алфавита, пробел, цифры, точку(.), тире(-), восклицательный знак(!), знак равенства(=), круглые и квадратные скобки([,],(,)), сабака(@) и знак додчеркивания(_)! <br />
  148. Также количество символов в нике не может превышать 15!
  149. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  150. </p></card></wml>');
  151. } elseif($version == "xhtml")
  152. {
  153. echo('<html>
  154. <head>
  155. <title>'.$title.'</title>
  156. </head>
  157. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  158. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  159. <tr><td align="center" bgcolor="'.$style['title'].'">
  160. <font color="#FFFFFF"><b>'.$title.'</b></font>
  161. </td></tr>
  162. <tr bgcolor="'.$style['text'].'"><td>
  163. Ник может содержать только знаки русского и латинского алфавита, пробел, цифры, точку(.), тире(-), восклицательный знак(!), знак равенства(=), круглые и квадратные скобки([,],(,)), сабака(@) и знак додчеркивания(_)! <br />
  164. Также количество символов в нике не может превышать 15!
  165. </td></tr>
  166. <tr><td bgcolor="'.$style['bottom'].'">
  167. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  168. </td></tr>
  169. </table></body></html>');
  170. }
  171. } elseif(!preg_match("|^[-\._0-9a-zA-Z]+$|", $_POST['password']) or strlen($_POST['password']) > 15)
  172. {
  173. $title = "Ошибка";
  174. if($version == "wml")
  175. {
  176. echo(doctype($title).'
  177. Пароль может содержать только знаки латинского алфавита, цифры, точку, тире и знак додчеркивания(_)! <br />
  178. Также количество символов в пароле не может превышать 15!
  179. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  180. </p></card></wml>');
  181. } elseif($version == "xhtml")
  182. {
  183. echo('<html>
  184. <head>
  185. <title>'.$title.'</title>
  186. </head>
  187. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  188. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  189. <tr><td align="center" bgcolor="'.$style['title'].'">
  190. <font color="#FFFFFF"><b>'.$title.'</b></font>
  191. </td></tr>
  192. <tr bgcolor="'.$style['text'].'"><td>
  193. Пароль может содержать только знаки латинского алфавита, цифры, точку, тире и знак додчеркивания(_)! <br />
  194. Также количество символов в пароле не может превышать 15!
  195. </td></tr>
  196. <tr><td bgcolor="'.$style['bottom'].'">
  197. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  198. </td></tr>
  199. </table></body></html>');
  200. }
  201. } else {
  202. $arr = array(
  203. 'a','b','c','d','e','f',
  204. 'g','h','i','j','k','l',
  205. 'm','n','o','p','q','r',
  206. 's','t','u','v','x','y',
  207. 'z','A','B','C','D','E',
  208. 'F','G','H','I','J','K',
  209. 'L','M','N','O','P','Q',
  210. 'R','S','T','U','V','X',
  211. 'Y','Z','1','2','3','4',
  212. '5','6','7','8','9','0');
  213. $sid = $arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)].$arr[rand(0, 60)];
  214.  
  215. if(mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE username='".$_POST['name']."'"), 0))
  216. {
  217. // Ник зареган. Проверяем правильность пароля.
  218. if(mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE username='".$_POST['name']."' AND password='".$_POST['password']."'"), 0))
  219. {
  220. // Пароль верен. Проверяем есть ли сессия с такими данными.
  221. if(mysql_result(mysql_query("SELECT COUNT(*) FROM `session` WHERE nickname='".$_POST['name']."' AND password='".$_POST['password']."'"), 0))
  222. {
  223. mysql_query("UPDATE `session` SET sid='".$sid."', time='".time()."' WHERE nickname='".$_POST['name']."' AND password='".$_POST['password']."'");
  224. } else {
  225. // Если сессия не создана, то создаем ее
  226. mysql_query("INSERT INTO `session` VALUES('".$sid."', '".$_POST['name']."', '".$_POST['password']."', '".time()."')");
  227. }
  228. $auth .= 1;
  229. } else {
  230. $auth .= 0;
  231. }
  232. } else
  233. {
  234. // Ник не зареган.
  235. mysql_query("INSERT INTO `users` VALUES(0, '".$_POST['name']."', '".$_POST['password']."', '".time()."', 'user', ".time().", '', '', null, '', '', 'n', '', 'normal', 2000, 0, 'off', 0, 0, 0, '', '', 'user', 'a' , '', '', '', '')");
  236. mysql_query("INSERT INTO `session` VALUES('".$sid."', '".$_POST['name']."', '".$_POST['password']."', '".time()."')");
  237. $auth .= 1;
  238. /*$errormsg = "Ошибка! Авторизация новых ников временно приостановлена!<br />
  239. На данный момент идёт разработка нового сценария Форума.<br />
  240. Чтобы узнать все подробности, перейдите по ссылке: <a href=\"http://wmf.su/?p=4&t=869&v=xhtml\"><b>http://wmf.su/?p=4&t=869&v=xhtml</b></a><br />";*/
  241. }
  242.  
  243. if($auth == 1)
  244. {
  245. if($fcode){
  246. unlink('./codes/'.$_GET['rnd'].'.txt');
  247. }
  248. $title = 'Авторизация успешна';
  249. if($version == "wml")
  250. {
  251. header("Content-type: text/vnd.wap.wml; charset=utf-8");
  252. header("Cache-Control: no-cache");
  253. echo(doctype($title).'
  254. Вы успешно авторизовались! <br />
  255.  
  256. <a href="./?p=0&amp;v=wml&amp;sid='.$sid.'&amp;rnd='.$ref.'">Вход в форум</a><br />
  257. <a href="./?p=33&amp;v=wml&amp;sid='.$sid.'&amp;rnd='.$ref.'">Кабинет</a><br />
  258. <a href="./?p=28&amp;logout=1&amp;v=wml&amp;sid='.$sid.'">Выход</a><br />
  259. </p></card></wml>');
  260. } elseif($version == "xhtml")
  261. {
  262. $_GET['sid'] = $sid;
  263. include("users.php");
  264. header("Content-type: text/html; charset=utf-8");
  265. header("Last-Modified:".gmdate("D, d M Y H:i:s")." GMT");
  266. header("Cache-Control: no-cache, must-relative");
  267. echo('
  268. <html>
  269. <head>
  270. <title>'.$title.'</title>
  271. </head>
  272. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  273. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  274. <tr><td align="center" bgcolor="'.$style['title'].'">
  275. <font color="#FFFFFF"><b>'.$title.'</b></font>
  276. </td></tr>
  277. <tr bgcolor="'.$style['text'].'"><td>
  278. Вы успешно авторизовались. Теперь Вы сможете более эффективно пользоваться форумом.
  279. </td></tr>
  280. <tr><td bgcolor="'.$style['bottom'].'">
  281. <a href="./?p=0&amp;v=xhtml&amp;sid='.$sid.'&amp;rnd='.$ref.'">Вход в форум</a><br />
  282. <a href="./?p=33&amp;v=xhtml&amp;sid='.$sid.'&amp;rnd='.$ref.'">Кабинет</a><br />
  283. <a href="./?p=28&amp;logout=1&amp;v=xhtml&amp;sid='.$sid.'">Выход</a><br />
  284. </td></tr>
  285. </table></body></html>');
  286. }
  287. }
  288. /*elseif(!empty($errormsg))
  289. {
  290. $title = "Ошибка";
  291. if($version == "wml")
  292. {
  293. header('Content-type: text/vnd.wap.wml; charset=utf-8');
  294. header("Cache-Control: no-cache");
  295. echo(doctype($title).$errormsg.'<br />---<br />
  296. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  297. </p></card></wml>');
  298. } elseif($version == "xhtml")
  299. {
  300. header("Content-type: text/html; charset=utf-8");
  301. header("Last-Modified:".gmdate("D, d M Y H:i:s")." GMT");
  302. header("Cache-Control: no-cache, must-relative");
  303. echo('<html>
  304. <head>
  305. <title>'.$title.'</title>
  306. </head>
  307. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  308. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  309. <tr><td align="center" bgcolor="'.$style['title'].'">
  310. <font color="#FFFFFF"><b>'.$title.'</b></font>
  311. </td></tr>
  312. <tr bgcolor="'.$style['text'].'"><td>
  313. '.$errormsg.'
  314. </td></tr>
  315. <tr><td bgcolor="'.$style['bottom'].'">
  316. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  317. </td></tr>
  318. </table></body></html>');
  319. }
  320. }*/
  321. else
  322. {
  323.  
  324. $title = "Ошибка";
  325. if($version == "wml")
  326. {
  327. header('Content-type: text/vnd.wap.wml; charset=utf-8');
  328. header("Cache-Control: no-cache");
  329. echo(doctype($title).'К сожалению, такой ник уже зарегистрирован. <br />
  330. Пароль не верен! <br />---<br />
  331. <a href="./?p=0&amp;v=wml">Назад в форум</a><br />
  332. </p></card></wml>');
  333. } elseif($version == "xhtml")
  334. {
  335. header("Content-type: text/html; charset=utf-8");
  336. header("Last-Modified:".gmdate("D, d M Y H:i:s")." GMT");
  337. header("Cache-Control: no-cache, must-relative");
  338. echo('<html>
  339. <head>
  340. <title>'.$title.'</title>
  341. </head>
  342. <body bgcolor="'.$style['background'].'" link="'.$style['link'].'" vlink="'.$style['link'].'" text="#000000">
  343. <table align="center" border="0" cellspacing="1" cellpadding="5" width="350">
  344. <tr><td align="center" bgcolor="'.$style['title'].'">
  345. <font color="#FFFFFF"><b>'.$title.'</b></font>
  346. </td></tr>
  347. <tr bgcolor="'.$style['text'].'"><td>
  348. К сожалению, такой ник уже зарегистрирован. <br />
  349. Пароль не верен!
  350. </td></tr>
  351. <tr><td bgcolor="'.$style['bottom'].'">
  352. <a href="./?p=0&amp;v=xhtml">Назад в форум</a><br />
  353. </td></tr>
  354. </table></body></html>');
  355. }
  356. }
  357. }
  358. }
  359. ?>
  360.