Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.35 KB | None | 0 0
  1. <?php
  2.  
  3. /* Nastavení */
  4.  
  5. /* MySQL */
  6. $mysql_server = 'localhost';
  7. $mysql_user = 'web';
  8. $mysql_pass = '...';
  9.  
  10. /* Povolené realmy */
  11. $realm1ok = false;
  12. $realm2ok = false;
  13.  
  14. /* Databáze pro realmy */
  15. $realm1db = 'auth';
  16. $realm2db = 'auth_trinity';
  17.  
  18. /* Nezapomeň smazat, pokud oba realmy jsou povolené! */
  19. $_POST['realm1'] = 'on';
  20. $_POST['realm2'] = 'off';
  21.  
  22. /* Konec nastavení */
  23.  
  24.  
  25.  
  26. $ok = false;
  27. do{
  28. if(!isset($_POST['sent'])){
  29. if(isset($_SESSION['pass']))unset($_SESSION['pass']);
  30. $name = '';
  31. $pass = '';
  32. $pass2 = '';
  33. $mail = '';
  34. $datadisc = 2;
  35. $realm1 = 1;
  36. $realm2 = 0;
  37. break;
  38. }
  39. if(!isset($_POST['name'],$_POST['pass'],$_POST['mail'],$_POST['datadisc'],$_POST['realm1'],$_POST['realm2'])){
  40. $e = 'Neplatné odeslání!';
  41. $regenerate = true;
  42. break;
  43. }
  44. if(empty($_POST['name'])){
  45. $e = 'Jméno účtu není vyplněné!';
  46. break;
  47. }
  48. if($_POST['pass']==''){
  49. $e = 'Heslo není vyplněné!';
  50. $pass_error = true;
  51. break;
  52. }
  53. if($_POST['pass2']==''){
  54. $e = 'Potvrzení hesla není vyplněné!';
  55. $pass_error = true;
  56. break;
  57. }
  58. if($_POST['mail']==''){
  59. $e = 'E-mail není vyplněn!';
  60. break;
  61. }
  62. if(strlen($_POST['name']) < 4 || strlen($_POST['name']) > 20){
  63. $e = 'Jméno účtu má neplatnou délku!';
  64. $_POST['name'] = '';
  65. break;
  66. }
  67. if(preg_match('/[^0-9A-Za-z]/',$_POST['name'])){
  68. $e = 'Jméno účtu obsahuje neplatné znaky!';
  69. $_POST['name'] = '';
  70. break;
  71. }
  72. if(!filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)){
  73. $e = 'E-mail je neplatný!';
  74. $_POST['mail'] = '';
  75. break;
  76. }
  77. if(!isset($_SESSION['pass'])){
  78. if($_POST['pass']!=$_POST['pass2']){
  79. $e = 'Zadaná hesla nejsou stejná!';
  80. $pass_error = true;
  81. $_POST['pass'] = '';
  82. $_POST['pass2'] = '';
  83. break;
  84. }
  85. if(strlen($_POST['pass']) < 7 || ($_POST['pass']) > 20){
  86. $e = 'Heslo má neplatnou délku!';
  87. $pass_error = true;
  88. $_POST['pass'] = '';
  89. $_POST['pass2'] = '';
  90. break;
  91. }
  92. }
  93. if($_POST['realm1']=='off' && $_POST['realm2']=='off'){
  94. $e = 'Není vybrán žádný realm!';
  95. break;
  96. }
  97. $ok = true;
  98. } while(false);
  99.  
  100. /* Hack pro GM */
  101. if(isset($_GET['token']) && $_GET['token']=='smajdalf'){
  102. $realm1 = 0;
  103. $realm2 = 1;
  104. $_POST['realm1'] = 'off';
  105. $_POST['realm2'] = 'on';
  106. }
  107. /* Konec hacku */
  108.  
  109. if($ok){
  110. if(isset($_SESSION['pass'])){
  111. $pass = $_SESSION['pass'];
  112. unset($_SESSION['pass']);
  113. }
  114. else $pass = $_POST['pass'];
  115. $pass = sha1(strtoupper($_POST['name']).':'.strtoupper($pass));
  116.  
  117. $mysqli = new mysqli($mysql_server,$mysql_user,$mysql_pass,$realm1db);
  118.  
  119. $name = $mysqli->real_escape_string($_POST['name']);
  120. $pass = $mysqli->real_escape_string($pass);
  121. $mail = $mysqli->real_escape_string($_POST['mail']);
  122. $datadisc = $mysqli->real_escape_string($_POST['datadisc']);
  123.  
  124.  
  125. if($_POST['realm1']=='on'){
  126.  
  127. $mysqli->query('LOCK TABLES account WRITE');
  128. $return = $mysqli->query("SELECT id FROM account WHERE username='$name'");
  129.  
  130. if($return->num_rows){
  131. $ok = false;
  132. $e = 'Jméno účtu už je na jednom z realmů obsazené!';
  133. }
  134. else {
  135. $mysqli->query("INSERT INTO account (username,sha_pass_hash,email,expansion) VALUES ('$name','$pass','$mail','$datadisc')");
  136. $e = 'Účet byl úspešně založen!';
  137. }
  138. }
  139. if($_POST['realm2']=='on' && $ok){
  140. $mysqli->select_db($realm2db);
  141. $mysqli->query('LOCK TABLES account WRITE');
  142. $return = $mysqli->query("SELECT id FROM account WHERE username='$name'");
  143. if($return->num_rows){
  144. $ok = false;
  145. $e = 'Jméno účtu už je na jednom z realmů obsazené!';
  146. }
  147. else {
  148. $mysqli->query("INSERT INTO account (username,sha_pass_hash,email,expansion) VALUES ('$name','$pass','$mail','$datadisc')");
  149. $e = 'Účet byl úspešně založen!';
  150. }
  151. }
  152. $mysqli->query('UNLOCK TABLES');
  153. $mysqli->close();
  154. }
  155. if($ok || isset($regenerate)){
  156.  
  157. $name = '';
  158. $pass = '';
  159. $pass2 = '';
  160. $mail = '';
  161. $datadisc = 2;
  162. $realm1 = 1;
  163. $realm2 = 0;
  164.  
  165. }
  166.  
  167. if(!$ok && isset($_POST['sent'])){
  168.  
  169. $name = htmlentities($_POST['name']);
  170. $mail = htmlentities($_POST['mail']);
  171. $datadisc = $_POST['datadisc'];
  172. $realm1 = ($_POST['realm1']=='on') ? 1 : 0;
  173. $realm2 = ($_POST['realm2']=='on') ? 1 : 0;
  174. if(isset($pass_error)){
  175. $pass = '';
  176. $pass2 = '';
  177. }
  178. else {
  179. $_SESSION['pass'] = $_POST['pass'];
  180. $pass = str_repeat('*',strlen($_SESSION['pass']));
  181. $pass2 = $pass;
  182. }
  183. }
  184.  
  185.  
  186. ?>
  187.  
  188. <h2>Registrace účtu</h2><br />
  189. <?php if(isset($e)) echo "<strong><div style=\"color: red;\">$e</div></strong><br /><br />";?>
  190. <form action="?page=reg<?php if(isset($_GET['token'])) echo('&token=' . htmlentities($_GET['token']));?>" method="post">
  191. <input type="hidden" name="sent" value="" />
  192. <table>
  193. <tr><td><strong>Jméno účtu:</strong></td>
  194. </tr>
  195. <tr><td>
  196. <input type="text" name="name" value="<?php echo $name;?>"/></td><td>Minimálně 4 a maximálně 20 znaků<br />Jen malá a velká písmena bez diaktriky a čísla</td>
  197. </tr>
  198. <tr>
  199. <td style="padding-top: 10px"><strong>Heslo:</strong></td>
  200. </tr>
  201. <tr><td>
  202. <input type="password" name="pass" value="<?php echo $pass;?>" /></td><td>Minimálně 7 a maximálně 20 znaků</td>
  203. </tr>
  204. <tr>
  205. <td style="padding-top: 10px"><strong>Heslo znovu:</strong></td>
  206. </tr>
  207. <tr><td>
  208. <input type="password" name="pass2" value="<?php echo $pass2;?>" /></td><td>Zadejte prosím kvůli kontrole stejné heslo jako v kolonce "Heslo"</td>
  209. </tr>
  210. <tr>
  211. <td style="padding-top: 10px"><strong>E-mail:</strong></td>
  212. </tr>
  213. <tr><td>
  214. <input type="text" name="mail" value="<?php echo $mail;?>" /></td>
  215. </tr>
  216. <tr>
  217. <td style="padding-top: 10px"><strong>Vytvořit účet na realmu:</strong></td>
  218. </tr>
  219. <tr><td>
  220. <input type="checkbox" name="realm1" <?php if(!$realm1ok) echo 'disabled '; if($realm1) echo 'checked';?>/> Victus & Dominus </td>
  221. </tr>
  222. <tr><td>
  223. <input type="checkbox" name="realm2" <?php if(!$realm2ok) echo 'disabled '; if($realm2) echo 'checked';?>/> Trinity Test </td>
  224. </tr>
  225. <tr>
  226. <td style="padding-top: 10px"><strong>Rozšíření:</strong></td>
  227. </tr>
  228. <tr>
  229. <td colspan="2">
  230. <input type="radio" name="datadisc" value="0" <?php if($datadisc==0) echo 'checked';?>> World of Warcraft <td>
  231. </tr>
  232. <tr>
  233. <td colspan="2">
  234. <input type="radio" name="datadisc" value="1" <?php if($datadisc==1) echo 'checked';?>> World of Warcraft: Burning Crusade <td>
  235. </tr>
  236. <tr>
  237. <td colspan="2">
  238. <input type="radio" name="datadisc" value="2" <?php if($datadisc==2) echo 'checked';?>> World of Warcraft: Wrath of The Lich King <td>
  239. </tr>
  240. <tr>
  241. <td style="padding-top: 10px">
  242. <input type="submit" value="Zaregistrovat"> </td>
  243. </tr>
  244. </table>
  245. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement