Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Rejestracja - jak uniknąć powtórzeń nazw
michal_2
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 20.12.2009

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


Witam. Mam taki problem. Mam skrypt który rejestruje użytkowników. I jak teraz zrobić żeby nie dało się zarejestrować 2 takich samych o takich samych loginach. Próbowałem ale nie chce działać:

  1. if (mysqli_num_rows(mysqli_query($mysqli, "secelt user from uzytkownicy where user = '".$_POST['uzyt']."'")) > 1)
  2. {
  3. printf("Użytkownik o podanej nazwie już istnieje.");
  4. exit();
  5. }


Proszę o pomoc. Daję cały skrypt:

  1. <?php
  2. $mysqli = mysqli_connect("localhost", "michal2", "abracadabra", "strona");
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. printf("Nie udało się połączyć z bazą danych: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9. else
  10. {
  11. printf("Udało się połączyć z bazą.<br>");
  12.  
  13. if (isset($_POST['uzyt']) && isset($_POST['has1']) && isset($_POST['has2']))
  14. {
  15. if (strlen($_POST['uzyt']) < 6)
  16. {
  17. printf("Nazwa użytkownika musi mieć więcej niż 5 znaków.\n");
  18. exit();
  19. }
  20. if (strlen($_POST['has1']) < 6)
  21. {
  22. printf("Hasło musi mieć więcej niż 5 znaków.\n");
  23. exit();
  24. }
  25. if ($_POST['has1'] !== $_POST['has2'])
  26. {
  27. printf("Hasło1 i hasło2 różnią się od siebie.\n");
  28. exit();
  29. }
  30. if (mysqli_num_rows(mysqli_query($mysqli, "secelt user from uzytkownicy where user = '".$_POST['uzyt']."'")) > 0)
  31. {
  32. printf("Użytkownik o podanej nazwie już istnieje.");
  33. exit();
  34. }
  35. }
  36. }
  37.  
  38. $sql = "INSERT INTO uzytkownicy (user, pass) VALUES ('".$_POST['uzyt']."', '".$_POST['has1']."')";
  39. $rez = mysqli_query($mysqli, $sql);
  40.  
  41. if ($rez === TRUE)
  42. echo "Rejestracja zakończyła się pomyślnie.<br>";
  43. else
  44. printf("Nie udało się zakończyć rejestracji: %s\n", mysqli_error($mysqli));
  45.  
  46. mysqli_close($mysqli);
  47.  
  48. ?>


Ten post edytował michal_2 2.01.2010, 09:04:20
Go to the top of the page
+Quote Post
pablo663
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 22.12.2009

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


secelt user from uzytkownicy - powinno być select.

Ja robię to tak:

  1. $konto = mysql_real_escape_string (trim($_POST['konto']));
  2.  
  3. $password = sha1(md5(mysql_real_escape_string (trim($_POST['password']))));
  4.  
  5. $ile =mysql_query("SELECT * FROM `user` WHERE login = '$konto'");
  6.  
  7. $ile = mysql_num_rows($ile);
  8.  
  9. if ($ile==0) {
  10.  
  11. $zapytanie="INSERT INTO user (login,password) VALUES('$konto','$password')";
  12.  
  13. mysql_query($zapytanie) or die("Wystąpił błąd" );
  14.  
  15. echo('Konto '.$konto.' zostalo utworzone');
  16.  
  17.  
  18.  
  19. }
  20.  
  21. else
  22.  
  23. {
  24.  
  25. echo("Taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie");


Ten post edytował Ociu 2.01.2010, 11:01:38
Powód edycji: [Ociu]: poprawiłem bbCode
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Daj jeszcze unique na loginie w bazie.

I jeszcze jedno: podwójne hashowanie nie podwyższa bezpieczeństwa! Zamiast tego używaj losowej soli, unikalnej dla użytkownika, możesz też połączyć np. hasło z loginem/emailem.

Ten post edytował Mephistofeles 2.01.2010, 11:02:00
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 Aktualny czas: 19.08.2025 - 16:06