Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Rejestracja - jak uniknąć powtórzeń nazw
Forum PHP.pl > Forum > Przedszkole
michal_2
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. ?>
pablo663
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");
Mephistofeles
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.
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.