Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wszystkie hasła md5 tak samo się kodują
Forum PHP.pl > Forum > PHP
Pudi
Witam posiadam system rejestracji użytkowników ale niestety coś się zepsuło założyłem 3 konta 1
Pudi hasło sdasdad(przykładowo)
Test1 hasło testy1
Test2 hasło test2
I Tylko hasło w koncie Pudi działa można się logować itp, a w innych kontach jest napisane hasło nieprawidłowe po obejrzeniu phpmyadmin zauważyłem ze wszystkie konta mają tak samo zakodowane hasło jak konto PUDI, Sprawdziłem Konto Test1 i Test2 logowało się po podaniu hasła do konta Pudi i tutaj moje pytanie co robię źle kod pliku register.php
  1. <?php
  2.  
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $haslo2 = $_POST['haslo2'];
  6. $email = $_POST['email'];
  7. $losowe = $_POST['l'];
  8. $data=date('d.m.Y, H:i');
  9. $poziom = 0;
  10.  
  11. if ($_POST){
  12.  
  13. if(!empty($login) AND !empty($haslo) AND !empty($haslo2) AND !empty($email)){
  14.  
  15. if($haslo != $haslo2){
  16.  
  17. $info .= 'podane hasłą są różne<br />';
  18.  
  19. }else{
  20.  
  21. if(!ereg("^.+@.+\..+$", $email)){
  22.  
  23. $info .= 'niepoprawny adres e-mail<br />';
  24.  
  25. }else{
  26.  
  27. require_once('config.php');
  28.  
  29. $login = czysc($login);
  30. $haslo = czysc($haslo);
  31. $haslo2 = czysc($haslo);
  32. $email = czysc($email);
  33.  
  34.  
  35. $query = "SELECT login FROM users WHERE login='$login'";
  36. $result = mysql_query($query);
  37.  
  38. if(@mysql_num_rows($result) > 0){
  39.  
  40. $info .= "wybrana nazwa użytkownika($login) jest już zajęta<br />";
  41.  
  42. }else{
  43.  
  44. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login',md5('$haslo1'),'$email','$data','$poziom')";
  45. mysql_query($query);
  46.  
  47. $info .= 'rejestracja zakończyła się sukcesem<br />';
  48.  
  49. }
  50.  
  51. }
  52.  
  53. }
  54.  
  55. }else{
  56.  
  57. $info .= 'uzupełnij wszystkie pola<br />';
  58.  
  59. }
  60.  
  61. }
  62.  
  63. ?>
  64. <html>
  65. <head>
  66. <meta name="generator" content="WebSite PRO 4.3" />
  67. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  68. <title>Rejestracja</title>
  69. </head>
  70. <body>
  71.  
  72. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  73.  
  74. <table>
  75.  
  76. <tr>
  77. <td>login:</td>
  78. <td><input type='text' name='login'></td>
  79. </tr>
  80.  
  81. <tr>
  82. <td>hasło:</td>
  83. <td><input type='password' name='haslo'></td>
  84. </tr>
  85.  
  86. <tr>
  87. <td>powtórz hasło:</td>
  88. <td><input type='password' name='haslo2'></td>
  89. </tr>
  90.  
  91. <tr>
  92. <td>e-mail:</td>
  93. <td><input type='text' name='email'><input type='hidden' name='control' value='1'></td>
  94. </tr>
  95.  
  96. <tr>
  97. <td><input type='submit' value='zarejestruj'></td>
  98. </tr>
  99.  
  100. <tr>
  101. <td></td>
  102. <td colspan='2'><?php if(!empty($info)){ echo $info; } ?></td>
  103. </tr>
  104.  
  105. </table>
  106.  
  107. </form>
  108.  
  109. </body>
  110. </html>

A tak wyglada baza danych:



Proszę o pomoc bo kompletnie nie wiem gdzie jest błąd
lwc
Mniemam, że skrypt traktuje tą zmienną haslo1 jako tekst, bo jest w apostrofach.
greycoffey
Zmienna $haslo1 nie istnieje, za to istnieją $haslo i $haslo2. Jesli funkcja czysc, to funkcja wyciagnieta z jednego tutka na webhelpie, to lepiej ją zmień, jest niebezpieczna, co tam opisałem.
Pudi
Cytat(lwc @ 7.11.2010, 11:48:06 ) *
Mniemam, że skrypt traktuje tą zmienną haslo1 jako tekst, bo jest w apostrofach.

Po usunięciu nie dodaje nic do bazy ;/

Cytat(greycoffey @ 7.11.2010, 11:59:37 ) *
Zmienna $haslo1 nie istnieje, za to istnieją $haslo i $haslo2. Jesli funkcja czysc, to funkcja wyciagnieta z jednego tutka na webhelpie, to lepiej ją zmień, jest niebezpieczna, co tam opisałem.

Wiem juz porawiłem bo dałem inny plik czysty bez grafiki dlatego ale jest wszystko to samo a tą funkcje czysc poprawiłem na swój własny sposób i na mój użytek starczy winksmiley.jpg
greycoffey
Cytat(lwc @ 7.11.2010, 11:48:06 ) *
Mniemam, że skrypt traktuje tą zmienną haslo1 jako tekst, bo jest w apostrofach.


Btw. nie jest w apostrofach, jest w cudzysłowiu.

Cytat(Pudi @ 7.11.2010, 12:02:37 ) *
Wiem juz porawiłem bo dałem inny plik czysty bez grafiki dlatego ale jest wszystko to samo a tą funkcje czysc poprawiłem na swój własny sposób i na mój użytek starczy winksmiley.jpg


Czyli już nie wstawia takich samych wartości? Mógłbyś tą funkcję czysc() załadować na jakąś wklejkę, mam dziś chwilę czasu to mógłbym sprawdzić ją winksmiley.jpg
markonix
  1. '".md5($haslo1)."'

Nie powinno być tak?
tehaha
ponadto, żeby funkcja md5 działała to trzeba zrobić wyjście:
  1. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login',".md5("$haslo1").",'$email','$data','$poziom')";
Pudi
Cytat(markonix @ 7.11.2010, 12:03:44 ) *
  1. '".md5($haslo1)."'

Nie powinno być tak?

Zrobiłem tak rejestruje ale nadal to samo hasło takie same jest ;/
greycoffey
Cytat(markonix @ 7.11.2010, 12:03:44 ) *
  1. '".md5($haslo1)."'

Nie powinno być tak?


W cudzysłowach zmienne są podstawiane! W apostrofach nie! W tym wypadku jest w cudzysłowie!

  1. <?php
  2. $z = 'abc';
  3. echo "$abc";
  4. echo '$abc';
  5. ?>
tehaha
a skąd w ogóle bierzesz zmienną $hasło1, skoro nie masz jej zdefiniowanej? zamień to na $haslo
wdev
Zmienna $haslo1 nie pojawia się wcześniej (nie jest zadeklarowana, masz tylko zmienne $haslo i $haslo2), więc PHP ją traktuje jako wartość null. Jakbyś miał wyświetlanie błędów na poziomie E_NOTICE, to powinno wyświetlić. Pytanie, co z tym Pudim? Masz puste hasło?
greycoffey
Cytat(tehaha @ 7.11.2010, 12:06:12 ) *
ponadto, żeby funkcja md5 działała to trzeba zrobić wyjście:
  1. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login',".md5("$haslo1").",'$email','$data','$poziom')";


Nie! Funkcja md5 to FUNKCJA SQL!

Do autora: Zmienna $haslo1 nei istnieje! Włacz wyświetlanie błędów typue E_NOTICE.

@up wszyscy co piszą o $haslo1: zostało to już napisane w drugim poście a autor tematu chyba to olał.
markonix
Zakomentuj na razie:
Kod
// mysql_query($query)
;
I zobacz na sucho co zwraca md5('$haslo1') przy różnych hasłach.
Jeśli to samo to szukaj wyżej - poza tym wstaw poprawiony kod z tymi zmiennymi.
greycoffey
Cytat(markonix @ 7.11.2010, 12:09:42 ) *
Zakomentuj na razie:
Kod
// mysql_query($query)
;
I zobacz na sucho co zwraca md5('$haslo1') przy różnych hasłach.
Jeśli to samo to szukaj wyżej - poza tym wstaw poprawiony kod z tymi zmiennymi.


Problem już rozwiązany - zmienna $haslo1 nie istnieje.
Pudi
sorrka zły kod wkleiłem co zmiena jest haslo1 tak wyglada cały kod:
  1. <?
  2. ?>
  3. <html>
  4. <title>LechPoznanBloogTV - Transmije z Meczów Kolejorza za FREE</title>
  5. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  6. <head>
  7. <link rel="stylesheet" href="style.css" type="text/css">
  8. </head>
  9. <BODY topmargin="10">
  10.  
  11.  
  12. <table border="0" width="966" height="226" cellpadding="0" cellspacing="0" align="center">
  13. <TR><TD width="966" background="images/logo.png" height="226"></TD></TR></table>
  14. <table border="0" width="996" height="69" cellpadding="0" cellspacing="0" align="center">
  15. <TR><TD width="996" background="images/menu.png" height="69"><ul>
  16. <?php include('include/menugora.php'); ?>
  17. </ul></TD></TR></table>
  18.  
  19.  
  20. <table border="0" width="966" cellpadding="0" cellspacing="0" align="center" background="images/tlosite.png" valign="top">
  21.  
  22. <TR><TD width="204" height="15" valign="top">
  23.  
  24.  
  25. <table width="206" cellpadding="0" cellspacing="0">
  26. <?php include('include/menu.php'); ?>
  27. <?php include('include/menu5.php'); ?>
  28.  
  29. </TD>
  30. <TD width="750" height="15" valign="top">
  31.  
  32. <table width="750" cellpadding="0" cellspacing="0">
  33. <tr><td class="menu2">Rejestracja</td></tr>
  34. <tr><td class="news">
  35. <?php
  36.  
  37. $login = $_POST['login'];
  38. $haslo = $_POST['haslo'];
  39. $haslo2 = $_POST['haslo2'];
  40. $email = $_POST['email'];
  41. $losowe = $_POST['l'];
  42. $data=date('d.m.Y, H:i');
  43. $poziom = 0;
  44.  
  45. if ($_POST){
  46.  
  47. if(!empty($login) AND !empty($haslo) AND !empty($haslo2) AND !empty($email)){
  48.  
  49. if($haslo != $haslo2){
  50.  
  51. $info .= 'podane hasla sa rózne<br />';
  52.  
  53. }else{
  54.  
  55. if(!ereg("^.+@.+\..+$", $email)){
  56.  
  57. $info .= 'niepoprawny adres e-mail<br />';
  58.  
  59. }else{
  60.  
  61. require_once('config.php');
  62.  
  63. $login = czysc($login);
  64. $haslo = czysc($haslo);
  65. $haslo2 = czysc($haslo);
  66. $email = czysc($email);
  67.  
  68.  
  69. $query = "SELECT login FROM users WHERE login='$login'";
  70. $result = mysql_query($query);
  71.  
  72. if(@mysql_num_rows($result) > 0){
  73.  
  74. $info .= "wybrana nazwa uzytkownika($login) jest juz zajeta<br />";
  75.  
  76. }else{
  77.  
  78. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login','".md5($haslo)."','$email','$data','$poziom')";
  79. mysql_query($query);
  80.  
  81. $info .= 'rejestracja zakonczyla sie sukcesem<br />';
  82.  
  83. }
  84.  
  85. }
  86.  
  87. }
  88.  
  89. }else{
  90.  
  91. $info .= 'uzupelnij wszystkie pola<br />';
  92.  
  93. }
  94.  
  95. }
  96.  
  97. ?>
  98. <html>
  99. <head>
  100. <meta name="generator" content="WebSite PRO 4.3" />
  101. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  102. <title>Rejestracja</title>
  103. </head>
  104. <body>
  105.  
  106. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  107.  
  108. <table>
  109.  
  110. <tr>
  111. <td>login:</td>
  112. <td><input type='text' name='login'></td>
  113. </tr>
  114.  
  115. <tr>
  116. <td>haslo:</td>
  117. <td><input type='password' name='haslo'></td>
  118. </tr>
  119.  
  120. <tr>
  121. <td>powtórz haslo:</td>
  122. <td><input type='password' name='haslo2'></td>
  123. </tr>
  124.  
  125. <tr>
  126. <td>e-mail:</td>
  127. <td><input type='text' name='email'><input type='hidden' name='control' value='1'></td>
  128. </tr>
  129.  
  130. <tr>
  131. <td><input type='submit' value='zarejestruj'></td>
  132. </tr>
  133.  
  134. <tr>
  135. <td></td>
  136. <td colspan='2'><?php if(!empty($info)){ echo $info; } ?></td>
  137. </tr>
  138.  
  139. </table>
  140.  
  141. </form>
  142.  
  143. </body>
  144. </html>
  145. <br></td></tr><tr><td class="dol2"></td></tr>
  146. </table>
  147. </TD>
  148.  
  149.  
  150. </TR>
  151. </table>
  152. </div>
  153. <table border="0" width="966" height="60" cellpadding="0" cellspacing="0" align="center">
  154. <TR><TD width="966" background="images/stopka.png" height="60"></TD></TR></table>
  155.  
  156. <Center>by<a href="gg://2812141"> Pudi</a></center>
  157. </body>
  158. </html>

I nadal nie działa sorrka za wklejenie złego kodu pomyliło mi się na ftp winksmiley.jpg
greycoffey
Dodaj na początku:
  1. <?php
  2. ini_set('display_errors','1');
  3. ?>


I pokaz co Ci wypisuje.
Pudi
Cytat(greycoffey @ 7.11.2010, 12:19:19 ) *
Dodaj na początku:
  1. <?php
  2. ini_set('display_errors','1');
  3. ?>


I pokaz co Ci wypisuje.

Przed wpisaniem:
Kod
Notice: Undefined index: login in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 44

Notice: Undefined index: haslo in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 45

Notice: Undefined index: haslo2 in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 46

Notice: Undefined index: email in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 47

Notice: Undefined index: l in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 48

Po wypełnieniu:
Kod
Notice: Undefined index: l in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 48

Notice: Undefined variable: info in /home/lechtvfr/domains/lechtv.freecast.pl/public_html/rejestracja.php on line 88

greycoffey
Krytycznych błędów tu nie ma, po prostu sprawdzaj (funkcja isset($zmienna)) czy zmienna istnieje zanim przypiszesz ją do innej.
Pudi
Cytat(greycoffey @ 7.11.2010, 12:28:15 ) *
Krytycznych błędów tu nie ma, po prostu sprawdzaj (funkcja isset($zmienna)) czy zmienna istnieje zanim przypiszesz ją do innej.

To co mam zrobićquestionmark.gif wstydnis.gif

  1. if(!isset($login) AND !isset($haslo) AND !isset($haslo2) AND !isset($email)){
  2.  
  3. $login = czysc($login);
  4. $haslo = czysc($haslo);
  5. $haslo2 = czysc($haslo2);
  6. $email = czysc($email);
  7.  
  8.  
  9. $query = "SELECT login FROM users WHERE login='$login'";
  10. $result = mysql_query($query);
  11.  
  12. if(@mysql_num_rows($result) > 0){
  13.  
  14. $info .= "wybrana nazwa użytkownika($login) jest już zajęta<br />";
  15.  
  16. }else{
  17.  
  18. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login',md5('$haslo'),'$email','$data','$poziom')";
  19. mysql_query($query);
  20.  
  21. $info .= 'rejestracja zakończyła się sukcesem<br />';

przerobiłem tak jak powiedziales ale teraz nic się nie dzieje zero reakcji ;(
ciekawskiii
dziwny problem, w kodzie wszystko wyglada ok, wywal md5 i sprawdz czy zapisuje te same hasla
greycoffey
Cytat(Pudi @ 7.11.2010, 13:00:38 ) *
To co mam zrobićquestionmark.gif wstydnis.gif

  1. if(!isset($login) AND !isset($haslo) AND !isset($haslo2) AND !isset($email)){
  2.  
  3. $login = czysc($login);
  4. $haslo = czysc($haslo);
  5. $haslo2 = czysc($haslo2);
  6. $email = czysc($email);
  7.  
  8.  
  9. $query = "SELECT login FROM users WHERE login='$login'";
  10. $result = mysql_query($query);
  11.  
  12. if(@mysql_num_rows($result) > 0){
  13.  
  14. $info .= "wybrana nazwa użytkownika($login) jest już zajęta<br />";
  15.  
  16. }else{
  17.  
  18. $query = "INSERT INTO users (login,haslo,email,data,poziom) VALUES ('$login',md5('$haslo'),'$email','$data','$poziom')";
  19. mysql_query($query);
  20.  
  21. $info .= 'rejestracja zakończyła się sukcesem<br />';

przerobiłem tak jak powiedziales ale teraz nic się nie dzieje zero reakcji ;(


isset() to funkcja sprawdzająca czy zmienna ISTNIEJE, ty dałeś przed tym ! więc sprawdza Ci czy zmienna nie istnieje.
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.