Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie
Forum PHP.pl > Forum > Przedszkole
Johnas
Witam co trzeba zrobić aby skrypt nie patrzał na poprawność wpisywania wielkich liter w loginie?
  1. <?php
  2. if ($_POST['logowanie']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  3.  
  4.  
  5. $tabela = 'rejestracja'; // zdefiniowanie tabeli MySQL
  6.  
  7. $login = $_POST["login"];
  8. $haslo = $_POST["pass"];
  9.  
  10. $haslo = md5($haslo); // szyfrowanie podanego hasła
  11.  
  12. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  13. login='$login' and haslo='$haslo' and status=0");
  14.  
  15.  
  16. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  17. if (mysql_num_rows($wynik) == 1) {
  18. $informacja = mysql_fetch_array($wynik);
  19. echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</span>';
  20. }
  21.  
  22. // jeżeli wszystko jest dobrze, użytkownik się loguje
  23. $wynik=mysql_query("UPDATE $tabela SET online=1 WHERE
  24. login='$login' and haslo='$haslo' and status=1");
  25. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  26. login='$login' and haslo='$haslo' and status=1");
  27.  
  28. if (mysql_num_rows($wynik) == 1) {
  29. $informacja = mysql_fetch_array($wynik);
  30. $_SESSION["login"] = $informacja["login"];
  31. $_SESSION["email"] = $informacja["email"];
  32. $_SESSION["imie"] = $informacja["imie"];
  33. $_SESSION["nazwisko"] = $informacja["nazwisko"];
  34. $_SESSION["id"] = $informacja["id"];
  35. $_SESSION["id_rangi"] = $informacja["id_rangi"];
  36.  
  37. header('Location: index.php ');
  38. } else {
  39. echo '<span class="blad">Nie poprawny login lub hasło!</span>';
  40. }
  41. mysql_close($polaczenie);
  42. }
  43.  
  44. ?>
  45.  
  46.  
  47.  
  48. <form action="" method="post">
  49. <input type="hidden" name="logowanie" value="TRUE" />
  50. <div id="logowanie">
  51. <p>Login: <input type="text" name="login" id="acpro_inp0"></p>
  52. <p>Hasło: <input type="password" name="pass" id="acpro_inp0"></p>
  53. </div>
  54.  
  55. <p><input type="checkbox" name="nazwa" value="wartość" id="acpro_inp0" /> Zapamiętaj
  56.  
  57. <center><input align="center" class="submit" type="submit" value="Zaloguj" /></center>
  58.  
  59. </form>
#luq
strtolower?
Johnas
Zrobiłem tak:
  1. <?php
  2. if ($_POST['logowanie']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  3.  
  4.  
  5. $tabela = 'rejestracja'; // zdefiniowanie tabeli MySQL
  6.  
  7. $login = $_POST["login"];
  8. $haslo = $_POST["pass"];
  9. $haslo = md5($haslo); // szyfrowanie podanego hasła
  10.  
  11. function strtolower_utf8($login){
  12. $convert_to = array(
  13. "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
  14. "v", "w", "x", "y", "z", "ŕ", "á", "â", "ă", "ä", "ĺ", "ć", "ç", "č", "é", "ę", "ë", "ě", "í", "î", "ď",
  15. "đ", "ń", "ň", "ó", "ô", "ő", "ö", "ř", "ů", "ú", "ű", "ü", "ý", "а", "б", "в", "г", "д", "е", "ё", "ж",
  16. "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
  17. "ь", "э", "ю", "я"
  18. );
  19. $convert_from = array(
  20. "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
  21. "V", "W", "X", "Y", "Z", "Ŕ", "Á", "Â", "Ă", "Ä", "Ĺ", "Ć", "Ç", "Č", "É", "Ę", "Ë", "Ě", "Í", "Î", "Ď",
  22. "Đ", "Ń", "Ň", "Ó", "Ô", "Ő", "Ö", "Ř", "Ů", "Ú", "Ű", "Ü", "Ý", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж",
  23. "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ъ",
  24. "Ь", "Э", "Ю", "Я"
  25. );
  26.  
  27. return str_replace($convert_from, $convert_to, $login);
  28. }
  29.  
  30.  
  31. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  32. login='$login' and haslo='$haslo' and status=0");
  33.  
  34.  
  35. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  36. if (mysql_num_rows($wynik) == 1) {
  37. $informacja = mysql_fetch_array($wynik);
  38. echo '<span class="blad">Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</span>';
  39. }
  40.  
  41. // jeżeli wszystko jest dobrze, użytkownik się loguje
  42. $wynik=mysql_query("UPDATE $tabela SET online=1 WHERE
  43. login='$login' and haslo='$haslo' and status=1");
  44. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  45. login='$login' and haslo='$haslo' and status=1");
  46.  
  47. if (mysql_num_rows($wynik) == 1) {
  48. $informacja = mysql_fetch_array($wynik);
  49. $_SESSION["login"] = $informacja["login"];
  50. $_SESSION["email"] = $informacja["email"];
  51. $_SESSION["imie"] = $informacja["imie"];
  52. $_SESSION["nazwisko"] = $informacja["nazwisko"];
  53. $_SESSION["id"] = $informacja["id"];
  54. $_SESSION["id_rangi"] = $informacja["id_rangi"];
  55.  
  56. header('Location: index.php ');
  57. } else {
  58. echo '<span class="blad">Nie poprawny login lub hasło!</span>';
  59. }
  60. mysql_close($polaczenie);
  61. }
  62.  
  63. ?>


I dalej nic sad.gif
potreb
Kolega wyżej dał ci rozwiązanie, gdzie ty masz strtolower? Wrzuciłeś jakąś funkcję z kosmosu!
  1. $login = mb_strtolower($_POST["login"]);


Weź tak przy okazji poczytaj na tym forum o rejestracji o logowaniu bo to co wrzuciłeś niestety nie można nazwać kodem.
Rid
Cytat
Witam co trzeba zrobić aby skrypt nie patrzał na poprawność wpisywania wielkich liter w loginie?

Zalecałbym ,także zapoznać się z systemem porównywania znaków COLLATION ,od tego też zależy czy wielkość liter w bazie ma znaczenie.
Johnas
Może z kosmosu... smile.gif Ale jakoś nie działa nawet ta z kosmosu sad.gif Mam w MySQL login zapisany w sposób Jonek
Podczas wpisywania loginu w sposób: JoNeK wpisuje sie jonek mi chodzi aby dopasowywało login do tego z bazy... Jest taka opcja?

Nie rozumiem o co chodzi z tym COLLATION... Mam za pomocą tego rejestrowac?
Crozin
Unikod definiuje około 550 małych znaków (czyli takich posiadających swoje duże odpowiedniki), Ty natomiast masz określonych jedynie 88.

Jak już napisał @Rid za porównywanie znaków odpowiedzialny jest "parametr" COLLATION ustawiony na konkretną kolumnę. By wielkość znaków nie miała znaczenia powinno być ustawione jedno z tych kończących się na *_ci (case-insensitive). Prawdopodobnie teraz masz jakieś *_cs (case-sensitive) lub *_bin (binarne).
Johnas
Dzięki za nowe doświadczenie winksmiley.jpg Leci dla każdego pomógł
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.