Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd skryptu rejestracji
Forum PHP.pl > Forum > Przedszkole
Marek9910
Witajcie. Mam problem z skryptem rejestracji. po wpisaniu wszystkich danych pojawia się taki oto błąd
Cytat
Fatal error: Call to undefined function password_hash() in /home/allvarus/domains/tourney.pl/public_html/dev/admin/rejestracja.php on line 52


Nie wiem o co chodzi, więc piszę. Uczę się dopiero PHP także proszę o wyrozumiałość. Gdyby ktoś mógłby mi wytłumaczyć o co chodzi byłbym wdzięczny. Każdej osobie udzielającej odpowiedzi z góry serdeczne dzięki.
rad11
Pokaż kod z tego pliku
Marek9910
  1. <?php
  2.  
  3.  
  4. if (isset($_POST['email']))
  5. {
  6. //Udana walidacja? Załóżmy, że tak!
  7. $wszystko_OK=true;
  8.  
  9. //Sprawdź poprawność nickname'a
  10. $nick = $_POST['nick'];
  11.  
  12. //Sprawdzenie długości nicka
  13. if ((strlen($nick)<3) || (strlen($nick)>20))
  14. {
  15. $wszystko_OK=false;
  16. $_SESSION['e_nick']="Nick musi posiadać od 3 do 20 znaków!";
  17. }
  18.  
  19. if (ctype_alnum($nick)==false)
  20. {
  21. $wszystko_OK=false;
  22. $_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
  23. }
  24.  
  25. // Sprawdź poprawność adresu email
  26. $email = $_POST['email'];
  27. $emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
  28.  
  29. if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
  30. {
  31. $wszystko_OK=false;
  32. $_SESSION['e_email']="Podaj poprawny adres e-mail!";
  33. }
  34.  
  35. //Sprawdź poprawność hasła
  36. $haslo1 = $_POST['haslo1'];
  37. $haslo2 = $_POST['haslo2'];
  38.  
  39. if ((strlen($haslo1)<8) || (strlen($haslo1)>20))
  40. {
  41. $wszystko_OK=false;
  42. $_SESSION['e_haslo']="Hasło musi posiadać od 8 do 20 znaków!";
  43. }
  44.  
  45. if ($haslo1!=$haslo2)
  46. {
  47. $wszystko_OK=false;
  48. $_SESSION['e_haslo']="Podane hasła nie są identyczne!";
  49. }
  50.  
  51. $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
  52.  
  53. //Czy zaakceptowano regulamin?
  54. if (!isset($_POST['regulamin']))
  55. {
  56. $wszystko_OK=false;
  57. $_SESSION['e_regulamin']="Potwierdź akceptację regulaminu!";
  58. }
  59.  
  60. //Bot or not? Oto jest pytanie!
  61. $sekret = "6LctMxUTAAAAADaoxU3mej_fE8lG4WQMdZGhiRLE";
  62.  
  63. $sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
  64.  
  65. $odpowiedz = json_decode($sprawdz);
  66.  
  67. if ($odpowiedz->success==false)
  68. {
  69. $wszystko_OK=false;
  70. $_SESSION['e_bot']="Potwierdź, że nie jesteś botem!";
  71. }
  72.  
  73. //Zapamiętaj wprowadzone dane
  74. $_SESSION['fr_nick'] = $nick;
  75. $_SESSION['fr_email'] = $email;
  76. $_SESSION['fr_haslo1'] = $haslo1;
  77. $_SESSION['fr_haslo2'] = $haslo2;
  78. if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
  79.  
  80. require_once "connect.php";
  81. mysqli_report(MYSQLI_REPORT_STRICT);
  82.  
  83. try
  84. {
  85. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  86. if ($polaczenie->connect_errno!=0)
  87. {
  88. throw new Exception(mysqli_connect_errno());
  89. }
  90. else
  91. {
  92. //Czy email już istnieje?
  93. $rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE email='$email'");
  94.  
  95. if (!$rezultat) throw new Exception($polaczenie->error);
  96.  
  97. $ile_takich_maili = $rezultat->num_rows;
  98. if($ile_takich_maili>0)
  99. {
  100. $wszystko_OK=false;
  101. $_SESSION['e_email']="Istnieje już konto przypisane do tego adresu e-mail!";
  102. }
  103.  
  104. //Czy nick jest już zarezerwowany?
  105. $rezultat = $polaczenie->query("SELECT id FROM uzytkownicy WHERE user='$nick'");
  106.  
  107. if (!$rezultat) throw new Exception($polaczenie->error);
  108.  
  109. $ile_takich_nickow = $rezultat->num_rows;
  110. if($ile_takich_nickow>0)
  111. {
  112. $wszystko_OK=false;
  113. $_SESSION['e_nick']="Istnieje już gracz o takim nicku! Wybierz inny.";
  114. }
  115.  
  116. if ($wszystko_OK==true)
  117. {
  118. //Hurra, wszystkie testy zaliczone, dodajemy gracza do bazy
  119.  
  120. if ($polaczenie->query("INSERT INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_hash', '$email', 100, 100, 100, 14)"))
  121. {
  122. $_SESSION['udanarejestracja']=true;
  123. header('Location: witamy.php');
  124. }
  125. else
  126. {
  127. throw new Exception($polaczenie->error);
  128. }
  129.  
  130. }
  131.  
  132. $polaczenie->close();
  133. }
  134.  
  135. }
  136. catch(Exception $e)
  137. {
  138. echo '<span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
  139. echo '<br />Informacja developerska: '.$e;
  140. }
  141.  
  142. }
  143.  
  144.  
  145. ?>
  146.  
  147. <!DOCTYPE HTML>
  148. <html lang="pl">
  149. <head>
  150. <meta charset="utf-8" />
  151. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  152. <title>Osadnicy - załóż darmowe konto!</title>
  153. <script src='https://www.google.com/recaptcha/api.js'></script>
  154.  
  155. <style>
  156. .error
  157. {
  158. color:red;
  159. margin-top: 10px;
  160. margin-bottom: 10px;
  161. }
  162. </style>
  163. </head>
  164.  
  165. <body>
  166.  
  167. <form method="post">
  168.  
  169. Nickname: <br /> <input type="text" value="<?php
  170. if (isset($_SESSION['fr_nick']))
  171. {
  172. echo $_SESSION['fr_nick'];
  173. unset($_SESSION['fr_nick']);
  174. }
  175. ?>" name="nick" /><br />
  176.  
  177. <?php
  178. if (isset($_SESSION['e_nick']))
  179. {
  180. echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
  181. unset($_SESSION['e_nick']);
  182. }
  183. ?>
  184.  
  185. E-mail: <br /> <input type="text" value="<?php
  186. if (isset($_SESSION['fr_email']))
  187. {
  188. echo $_SESSION['fr_email'];
  189. unset($_SESSION['fr_email']);
  190. }
  191. ?>" name="email" /><br />
  192.  
  193. <?php
  194. if (isset($_SESSION['e_email']))
  195. {
  196. echo '<div class="error">'.$_SESSION['e_email'].'</div>';
  197. unset($_SESSION['e_email']);
  198. }
  199. ?>
  200.  
  201. Twoje hasło: <br /> <input type="password" value="<?php
  202. if (isset($_SESSION['fr_haslo1']))
  203. {
  204. echo $_SESSION['fr_haslo1'];
  205. unset($_SESSION['fr_haslo1']);
  206. }
  207. ?>" name="haslo1" /><br />
  208.  
  209. <?php
  210. if (isset($_SESSION['e_haslo']))
  211. {
  212. echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
  213. unset($_SESSION['e_haslo']);
  214. }
  215. ?>
  216.  
  217. Powtórz hasło: <br /> <input type="password" value="<?php
  218. if (isset($_SESSION['fr_haslo2']))
  219. {
  220. echo $_SESSION['fr_haslo2'];
  221. unset($_SESSION['fr_haslo2']);
  222. }
  223. ?>" name="haslo2" /><br />
  224.  
  225. <label>
  226. <input type="checkbox" name="regulamin" <?php
  227. if (isset($_SESSION['fr_regulamin']))
  228. {
  229. echo "checked";
  230. unset($_SESSION['fr_regulamin']);
  231. }
  232. ?>/> Akceptuję regulamin
  233. </label>
  234.  
  235. <?php
  236. if (isset($_SESSION['e_regulamin']))
  237. {
  238. echo '<div class="error">'.$_SESSION['e_regulamin'].'</div>';
  239. unset($_SESSION['e_regulamin']);
  240. }
  241. ?>
  242.  
  243. <div class="g-recaptcha" data-sitekey="6LctMxUTAAAAAC213WhbLkBoohjOG2o7qhc1g9Ll"></div>
  244.  
  245. <?php
  246. if (isset($_SESSION['e_bot']))
  247. {
  248. echo '<div class="error">'.$_SESSION['e_bot'].'</div>';
  249. unset($_SESSION['e_bot']);
  250. }
  251. ?>
  252.  
  253. <br />
  254.  
  255. <input type="submit" value="Zarejestruj się" />
  256.  
  257. </form>
  258.  
  259. </body>
  260. </html>
markonix
Masz za niską wersję PHP na serwerze.

http://php.net/manual/en/function.password-hash.php
Marek9910
Czyli trzeba zmienić cały kod?
markonix
Nie, zaktualizować PHP.
Kshyhoo
Przenoszę...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.