Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] rejestracja
gigzorr
post 6.02.2010, 22:34:51
Post #1





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


  1. <?php
  2. //data
  3. $fullname = strip_tags($_POST['fullname']);
  4. $username = strip_tags($_POST['username']);
  5. $password = strip_tags($_POST['password']);
  6. $repeatpassword = strip_tags($_POST['repeatpassword']);
  7. $date = date("Y-m-d");
  8.  
  9. if ($submit)
  10. {
  11. //check for existance
  12. if ($fullname&&$username&&$password&&$repeatpassword)
  13. {
  14. // encrypt password
  15. $password = md5($password);
  16. $repeatpassword = md5($repeatpassword);
  17.  
  18. if ($password==$repeatpassword)
  19. {
  20. //check char lenght of username and fullname
  21. if (strlen($username)>25||strlen($fullname)>25)
  22. {
  23. echo "username albo fullname jest za dlugie";
  24. }
  25. else
  26. {
  27.  
  28. //check password lenght
  29. if(strlen($password)>25||strlen($password)<6)
  30. {
  31. echo "Haslo musi byc pomiedzy 6 a 25 znakami!";
  32. }
  33. else
  34. {
  35. //register info
  36.  
  37. echo "Success!!";
  38.  
  39.  
  40. }
  41.  
  42.  
  43. }
  44.  
  45.  
  46.  
  47.  
  48. }
  49. else
  50. echo "Twoje haslo sie nie zgadza";
  51.  
  52.  
  53. }
  54. else
  55. echo "<b>Prosze uzupelnic wszystkie pola!";
  56.  
  57.  
  58. }
  59.  
  60.  
  61. ?>
  62.  
  63. <html>
  64. <p>
  65. <form action='register.php'>
  66. <table>
  67. <tr>
  68. <td>
  69. Your full name:
  70. </td>
  71. <td>
  72. <input type='text' name='fullname'>
  73. </td>
  74. </tr>
  75. <td>
  76. <tr>
  77. <td>
  78. Choose a username:
  79. </td>
  80. <td>
  81. <input type='text' name='fullname'>
  82. </td>
  83. </tr>
  84. <td>
  85. Choose a password:
  86. </td>
  87. <td>
  88. <input type='password' name='password'>
  89. </td>
  90. </tr>
  91. <br>
  92. <td>
  93. Repeat your password:
  94. </td>
  95. <td>
  96. <input type='password' name='repeatpassword'>
  97. </td>
  98. </tr>
  99.  
  100.  
  101. </table>
  102. <p>
  103. <input type='submit' name='submit' value="Register">
  104. <a href="index.php">Back</a>
  105. </form>
  106. </html>


Błąd jest w tym, że jak wpisze wszystkie dane(lub byle co) poprawnie to dalej pokazuje, że "Prosze uzupelnić wszystkie pola" , i tak w kółko .Dodam , że kod jest nie skończony , ale np jak nic nie wpisze albo za dlugie username itp. to powinno błąd pokazywać.

Ten post edytował gigzorr 6.02.2010, 22:36:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Fifi209
post 6.02.2010, 22:40:09
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zacznijmy od faktu, że sprawdzasz potem "długość" hasła - a właściwie tak nie jest, bo liczysz ile znaków ma string, który dostałeś jako wynik działania funkcji md5

Tutaj cytacik z manuala:
Kod
Returns the hash as a 32-character hexadecimal number.


I jak sprawdzasz czy pola są wypełnione to używaj: empty

Ten post edytował fifi209 6.02.2010, 22:40:55


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
darko
post 6.02.2010, 22:43:17
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Brakuje definicji zmiennej $submit to raz. Dwa to linia 29. - jaki jest sens sprawdzać $password po zahashowaniu i ponownym ustawieniu wartości pod tę samą zmienną, przecież wiadomo, że hash md5 będzie mieć długość 32 znaków.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
gigzorr
post 7.02.2010, 16:28:49
Post #4





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


Cytat(darko @ 6.02.2010, 22:43:17 ) *
Brakuje definicji zmiennej $submit to raz. Dwa to linia 29. - jaki jest sens sprawdzać $password po zahashowaniu i ponownym ustawieniu wartości pod tę samą zmienną, przecież wiadomo, że hash md5 będzie mieć długość 32 znaków.



Mógłbyś podpowiedzieć gdzie brakuje zmiennej $submit ?bo ja jestem jak narazie lamer w tych sprawach smile.gif
Go to the top of the page
+Quote Post
Quantum
post 7.02.2010, 16:31:32
Post #5





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


..linia 9 blink.gif

Ten post edytował sniffer32 7.02.2010, 16:33:30
Go to the top of the page
+Quote Post
darko
post 7.02.2010, 16:34:56
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. $submit = $_POST['submit'];
  2. if ($submit) {
  3. // (...)


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
gigzorr
post 7.02.2010, 16:58:51
Post #7





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


Cytat(darko @ 7.02.2010, 16:34:56 ) *
  1. $submit = $_POST['submit'];
  2. if ($submit) {
  3. // (...)



Teraz nic nie wyświetla , tzn jak źle wpisze pw?Coś takiego chociaż powinno być tak? " Haslo musi byc pomiedzy 6 a 25 znakami "


Ten post edytował gigzorr 7.02.2010, 17:02:16
Go to the top of the page
+Quote Post
darko
post 7.02.2010, 17:03:02
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Przeczytaj kilka postów wyżej na temat hasła i długości hashy md5 i pomyśl dlaczego hasło, które porównujesz nie spełnia zadanych kryteriów?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
gigzorr
post 7.02.2010, 19:18:12
Post #9





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


Cytat(darko @ 7.02.2010, 17:03:02 ) *
Przeczytaj kilka postów wyżej na temat hasła i długości hashy md5 i pomyśl dlaczego hasło, które porównujesz nie spełnia zadanych kryteriów?



Wywaliłem te md5 , ale dalej nic , hm a co do to tego , 'prosze uzupelnic pola wszystkie pola , tez nie dziala'.

Będę próbował , może mi się uda smile.gif
/edit
damn...

method='post' w htmlu brakowało + x2 fullname było, noi ten md5 nie potrzebny.

Taka mała różnica a cały kod potrafi zepsuć.Druga nauczka na przyszłośćsmile.gif

  1. //register info
  2. //open database
  3. $connect = mysql_connect("localhost","root","krasnal") or die ("nie moge sie polaczyc z db");
  4. mysql_select_db("phplogin") or die("nie moge znalesc db");
  5. $queryreg = mysql_query("
  6.  
  7. INSERT INTO users VALUES ('','$fullname','$username','$password','$date')
  8. ");
  9.  
  10. die("You have been registered!<a href='index.php'><br>Click</a> here to back");

/EDIT
hm . Problem leży w tym, że jak się zarejestruję to pisze "you have been .." ale w db nie ma żadnego nowego użytkownika.

Ten post edytował gigzorr 8.02.2010, 09:43:40
Go to the top of the page
+Quote Post
darko
post 8.02.2010, 04:19:23
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(gigzorr @ 6.02.2010, 22:34:51 ) *
Dodam , że kod jest nie skończony , ale np jak nic nie wpisze albo za dlugie username itp. to powinno błąd pokazywać.

Ok, najpierw skończ swój kod, dopiero wtedy pokaż, z czym jest problem i nie szukaj dziury w całym winksmiley.jpg

Ten post edytował darko 8.02.2010, 07:26:59


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
gigzorr
post 8.02.2010, 09:13:33
Post #11





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


Cytat(darko @ 8.02.2010, 04:19:23 ) *
Ok, najpierw skończ swój kod, dopiero wtedy pokaż, z czym jest problem i nie szukaj dziury w całym winksmiley.jpg



Nie doczytałeś mojego poprzedniego postu do końca.
Go to the top of the page
+Quote Post
Armstrong
post 8.02.2010, 11:33:59
Post #12





Grupa: Zarejestrowani
Postów: 200
Pomógł: 40
Dołączył: 26.08.2009
Skąd: Kobiernice

Ostrzeżenie: (0%)
-----


Wiesz do czego służy die() Dobrze przeanalizuj linie od 5 do 7. W poście nad Darko.

Ten post edytował Armstrong 8.02.2010, 11:35:35


--------------------
// NOPE
Go to the top of the page
+Quote Post
gigzorr
post 8.02.2010, 12:02:23
Post #13





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


Jestem idiota. W bazie danych brakowało name/daty.Było username/password tylko.
A z tym "die()" to oco ci chodziło?
Mam jeszcze jeden problem, otóż na tych samych danych czyli loginie haśle/name , mogę się rejestrować do woli , nie mam zielonego pojęcia jak to naprawić?

Ten post edytował gigzorr 8.02.2010, 12:05:19
Go to the top of the page
+Quote Post
altruista2
post 9.02.2010, 02:09:54
Post #14





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

Ostrzeżenie: (0%)
-----


1. Możesz zacząć od prostej "optymalizacji" zmieniająć
  1. $password = md5($password);
  2. $repeatpassword = md5($repeatpassword);
  3. if ($password==$repeatpassword) {

na
  1. if ($password==$repeatpassword) {
  2. $password = md5($password);


Ale to nie jest ważne smile.gif

Jeśli chodzi o:
Cytat
Mam jeszcze jeden problem, otóż na tych samych danych czyli loginie haśle/name , mogę się rejestrować do woli , nie mam zielonego pojęcia jak to naprawić?


Jeśli działasz na bazie danych to:
  1. if(@mysql_num_rows(mysql_query("SELECT ID FROM Tabela_z_uzytkownikami WHERE Nazwa_uzytkownika='".$username."'")) > 0) {
  2. // nie można się zarejestrować, logi już występuje.
  3. }


Dodam że:
a) Wypada mieć index na "Nazwa_uzytkownika" (np. varchar(32))
cool.gif strip_tags chroni cię tylko przed atakiem XSS ze strony przeglądarki. Lektura "do poduszki":
http://pl.wikipedia.org/wiki/Cross-site_scripting
Temat: SQL Injection Insertion
http://segfaultlabs.com/files/pdf/bezpiecz...-zagrozenia.pdf


--------------------
Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.

"Pomaganie"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 21:59