Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie i rejestracja z MD5
Forum PHP.pl > Forum > Przedszkole
djkrc
Witam jestem zielony w php (zajmuje sie tym dopiero od trzech tygodni).
Pisze stronke w php, mam rejestrację i logowanie, lecz ich wadą jest to, że nie koduje hasła i loginu poprzez MD5.
Jeśli ktoś mógł mi pomóc w przerobieniu kodu był bym bardzo wdzięczny.
Oto kod:
zarejestruj.php
  1. <?php
  2. //jesli byl wyslany formularz przechodzimy do obsługi danych
  3. if(isset($_POST['wyslij']))
  4. {
  5. //Obrabiamy wszystkie zmienne przekazane metodą POST
  6. foreach ($_POST AS $klucz => $wartosc)
  7. {
  8. $wartosc= trim($wartosc);
  9. //usuwamy białe znaki
  10. $wartosc= stripslashes($wartosc);
  11. $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  12. $_POST[$klucz]=$wartosc;
  13. }
  14. $login=$_POST['login'];
  15. $haslo=$_POST['haslo'];
  16. $re_haslo=$_POST['re_haslo'];
  17. $email=$_POST['email'];
  18. $data=$_POST['data'];
  19. $blad_txt='';
  20. $blad=false;
  21. //Sprawdzamy czy użytkownik o danym Loginie nie jest juz zajęty
  22. $zapytanie_sprawdz_usera= "select * from user where user_name='$login' ";
  23. $wynik = mysql_query($zapytanie_sprawdz_usera);
  24. if(!$wynik)
  25. {
  26. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej Login
  27. .';
  28. }
  29. if(mysql_num_rows($wynik)>0)
  30. {
  31. $sprawdz_login=1;
  32. }
  33. // Sprawdzamy czy adres email sie nie powtarza.
  34. $zapytanie_sprawdz_email= "select * from user where user_email ='$email' ";
  35. $wynik_email = mysql_query($zapytanie_sprawdz_email);
  36. if(!$wynik_email)
  37. {
  38. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej email
  39. .';
  40. }
  41. if(mysql_num_rows($wynik_email)>0)
  42. {
  43. $sprawdz_email=1;
  44. }
  45. //sprawdzamy czy poprawnie jest wypełnine pole login
  46. if(empty($login)){
  47. $info_txt_nick.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  48. $blad=true;
  49. }
  50. else if($sprawdz_login==1){
  51. $info_txt_nick.='<font color="#B20000"> Login o takiej nazwie już istnieje.</font>';
  52. $blad=true;
  53. }
  54. else if(strlen($login)<5){
  55. $info_txt_nick.='<font color="#B20000">Login jest za krótki.</font>';
  56. $blad=true;
  57. }
  58. else if(strlen($login)>12){
  59. $info_txt_nick.='<font color="#B20000"> Nie poprawna nazwa loginu, max 12 znaków.</font>';
  60. $blad=true;
  61. }
  62. else{
  63. $info_txt_nick.='<font color="#207C07"> OK.</font>';
  64. }
  65. //sprawdzamy czy jest prawidlowe haslo
  66. if(empty($haslo)){
  67. $info_txt_haslo.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  68. $blad=true;
  69. }
  70. else if(strlen($haslo)<=6) {
  71. $info_txt_haslo.='<font color="#B20000"> Hało jest za krótkie.</font>';
  72. $blad=true;
  73. }
  74. else if(strlen($haslo)>16){
  75. $info_txt_haslo.='<font color="#B20000"> Hasło może składać sie z Max 16 znaków.</font>';
  76. $blad=true;
  77. }
  78. else{
  79. $info_txt_haslo.='<font color="#207C07"><b> OK.</b></font>';
  80. }
  81. //sprawdzamy czy jest 2 hasło
  82. if(empty($re_haslo)){
  83. $info_txt_re_haslo.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  84. $blad=true;
  85. }
  86. else if($haslo != $re_haslo){
  87. $info_txt_re_haslo.='<font color="#B20000"> Hała muszą być takie same.</font>';
  88. $blad=true;
  89. }
  90. else{
  91. $info_txt_re_haslo.='<font color="#B20000"><font color="#207C07"> OK.</font>';
  92. }
  93. //sprawdzamy czy jest podany prawidłowy adres e-mail
  94. if(empty($email)){
  95. $info_txt_email.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  96. $blad=true;
  97. }
  98. else if($sprawdz_email==1){
  99. $info_txt_email.='<font color="#B20000"> Adres email o takiej nazwie już istnieje.</font>';
  100. $blad=true;
  101. }
  102. else if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)){
  103. $info_txt_email.='<font color="#B20000"> Adres email jest nie prawidłowy.</font>';
  104. $blad=true;
  105. }
  106. else{
  107. $info_txt_email.='<font color="#207C07"> OK.</font>';
  108. }
  109. //data
  110. if(empty($data)){
  111. $info_txt_haslo.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  112. $blad=true;
  113. }
  114. else if(strlen($data)>40){
  115. $info_txt_data.='<font color="#B20000"> Hasło może składać sie z Max 40 znaków.</font>';
  116. $blad=true;
  117. }
  118. else{
  119. $info_txt_data.='<font color="#207C07"><b> OK.</b></font>';
  120. }
  121. if(!$blad)
  122. {
  123. $pokaz_form=true;
  124. // Odpowiedz
  125. $odpowiedz = mysql_query("INSERT INTO `user` set user_name='$login', user_pass='$haslo', user_email='$email', user_date='$data' ");
  126. if($odpowiedz > 0){
  127. echo 'Rejestracja przebiegła pomyślnie do konca.<br /><ul><li>Twój nick to: '.$login.'</li><li>haslo: '.$haslo.'</li><li>re_haslo: '.$re_haslo.'</li><li>email: '.$email.'</li><li>data dołączenia: '.$data.'</li></ul>';
  128. }
  129. else{
  130. $pokaz_form=false;
  131. echo 'Problem z MySQL.';
  132. }
  133. }
  134. else
  135. {
  136. //cos jest zle – wyświetlamy stosowne komunikaty
  137. // echo $blad_txt;
  138. $pokaz_form=false;
  139. }
  140. }
  141. else
  142. {
  143. //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
  144. $login='';
  145. $haslo='';
  146. $re_haslo='';
  147. $email='';
  148. }
  149. //wyswietlamy formularz
  150. if($pokaz_form!=true){
  151. ?>
  152. <style>
  153. table.form{
  154. margin-left: 120px;
  155. font-size: 12px;
  156. }
  157. td.title{
  158. vertical-align: bottom;
  159. text-align: right;
  160. }
  161. td.info{
  162. vertical-align: bottom;
  163. text-align: left;
  164. }
  165. </style>
  166. <table id='bl' align='left' width='100%' >
  167. <tr>
  168. <Td valign='top'>
  169. <table align='left'>
  170. <tr>
  171. <Td align='left'>
  172. <form action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
  173. <table class="form" name="form" border="0px" >
  174. <tbody>
  175. <tr>
  176. <td style="width:80px;"></td>
  177. <td>REJESTRACJA</td>
  178. </tr>
  179. <tr>
  180. <td class="title">Login:</td>
  181. <td class="info">
  182. <input type="text" name="login" value="<? echo $login; ?>"> <? echo $info_txt_nick; ?>
  183. </td>
  184. </tr>
  185. <tr>
  186. <td class="title">Hasło:</td>
  187. <td class="info">
  188. <input type="password" name="haslo" value="<? echo $haslo; ?>"> <? echo $info_txt_haslo; ?>
  189. </td>
  190. </tr>
  191. <tr>
  192. <td class="title">Powtórz Hasło:</td>
  193. <td class="info">
  194. <input type="password" name="re_haslo" value="<? echo $re_haslo; ?>"> <? echo $info_txt_re_haslo; ?>
  195. </td>
  196. </tr>
  197. <tr>
  198. <td class="title">E-Mail:</td>
  199. <td class="info">
  200. <input type="text" name="email" value="<? echo $email; ?>"> <? echo $info_txt_email; ?>
  201. </td>
  202. </tr>
  203. <tr>
  204. <td class="title">Data:</td>
  205. <td class="info">
  206. <input type="text" name="data" value="<? $date = date("Y-m-d H:i:s"); echo $date; ?>"> <? echo $info_txt_data; ?>
  207. </td>
  208. </tr>
  209. <tr>
  210. <td>
  211. </td>
  212. <td>
  213. <input type="submit" name="wyslij" value="Zarejestruj!!!" >
  214. <input type="button" value="Reset" class="clean" onclick="window.location='<? $_SERVER['PHP_SELF']; ?>' "/>
  215. </td>
  216. </tr>
  217. </tbody>
  218. </table>
  219. </form>
  220. </form>
  221. </td>
  222. </tr>
  223. </table>
  224. </td>
  225. <?
  226. }
  227. else{
  228. return false;
  229. }
  230. ?>
  231. </td>
  232. </tr>
  233. </table>

login.php
  1. <?php
  2. include "config.php";
  3. $user_login = $_POST['login'];
  4. $user_pass = $_POST['pass'];
  5. $sql = "SELECT * FROM user WHERE user_name = '".$user_login."' AND user_pass = '".$user_pass."';";
  6. $result = mysql_query($sql)
  7. or die("Podałeś błędny login lub hasło");
  8. $rows = mysql_num_rows($result);
  9. if ($rows == 1) {
  10. $r = mysql_fetch_assoc($result);
  11. session_register("user_id");
  12. session_register("user_name");
  13. session_register("user_email");
  14. session_register("user_rights");
  15. session_register("user_date");
  16. $_SESSION['user_id'] = $r['user_id'];
  17. $_SESSION['user_name'] = $r['user_name'];
  18. $_SESSION['user_email'] = $r['user_email'];
  19. $_SESSION['user_rights'] = $r['user_rights'];
  20. $_SESSION['user_date'] = $r['user_date'];
  21. header("Location: zaloguj.php");
  22. }
  23. else {
  24. echo "Podałeś błędny login lub hasło... <br> <a href=\"index.php\">Powrót</a>";
  25. }
  26. ?>

Kod działa prawidłowo, konta są dodawane i można sie na nie zalogować, chodzi mi tylko o zabezpieczenie hasła.
Będę bardzo wdzięczny za pomoc...
darko
A gdzie Ty tu w ogóle korzystasz z funkcji md5 ? Poza tym md5 nie koduje, a hashuje algorytmem jednokierunkowym, tworząc 32-znakowy skrót. Poczytaj
djkrc
No własnie chodzi mi o to, że nie mam pojęcia co zmienic w kodzie, aby hashować hasło...
darko
Wystarczy przeczytać informacje podane na stronie, do której podałem link.
  1. $super_tajne_zahashowane_haslo = md5($haslo);
  2. // i teraz sprawdź:
  3. echo $super_tajne_zahashowane_haslo;

Naprawdę takie trudne?
djkrc
Włąśnie jestem w trakcie czytania, dzieki za linka, juz powoli zaczynam kumać o co chodzi, sorka ale pierwszy raz stykam sie z czymś takim...
darko
Cytat(djkrc @ 21.02.2010, 00:13:07 ) *
Włąśnie jestem w trakcie czytania, dzieki za linka, juz powoli zaczynam kumać o co chodzi, sorka ale pierwszy raz stykam sie z czymś takim...

Nie ma za co przepraszać, jeżeli wykazujesz przynajmniej minimum swojego wkładu własnego - błądzić i pytać to prawo początkującego. Generalnie manual php na stronie http://php.net/manual/ niech będzie Twoim drogowskazem, zaglądaj tam najczęściej w pierwszej kolejności. Pozdrawiam.
djkrc
Dzieki za pomoc. Pozdrawiam...

Dziś rano sprawdziłem, wszystko działa tak jak powinno, dzieki wielkie...
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.