Czego się nauczysz?
- Przetwarzania i formatowania łańcuchów tekstowych w PHP
- Usuwania polskich znakow diakrytycznych
- Sprawdzania unikalnosci danych w pliku JSON
- Różnych strategii generowania identyfikatorow
This content is not available in your language yet.
Stworzysz Generator nazw użytkownika - aplikacje umozliwiajaca automatyczne tworzenie loginow na podstawie imienia, nazwiska i opcjonalnie innych danych (np. roku urodzenia). Użytkownik wprowadza dane, wybiera format loginu, a system generuje unikalna nazwe użytkownika. Historia wygenerowanych loginow jest zapisywana do pliku JSON.
Czego się nauczysz?
W prawdziwej pracy...
Generatory loginow sa używane w systemach HR, platformach edukacyjnych, systemach CRM i wszedzie tam, gdzie trzeba automatycznie tworzyć konta dla dużej liczby użytkowników. Umiejetnosc pracy z tekstem (normalizacja, transliteracja, formatowanie) i zapewniania unikalnosci to codziennosc w pracy programisty.
Formularz wprowadzania danych Użytkownik podaje imie, nazwisko oraz opcjonalnie dodatkowe dane (rok urodzenia, numer). Wybiera też format loginu z listy.
Generowanie loginu System łączy dane według wybranego formatu (np. “jan.kowalski”, “jkowalski”, “kowalski.j”), usuwa polskie znaki i konwertuje na małe litery.
Zapis do historii Każdy wygenerowany login jest zapisywany do pliku JSON, co pozwala sprawdzać unikalnosc i przegladac historie.
Przykładowa struktura pliku JSON:
{ "usernames": [ { "id": 1, "first_name": "Jan", "last_name": "Kowalski", "format": "first.last", "username": "jan.kowalski", "created_at": "2026-02-13 10:30:00" }, { "id": 2, "first_name": "Anna", "last_name": "Zolnierczyk", "format": "flast", "username": "azolnierczyk", "created_at": "2026-02-13 11:45:00" }, { "id": 3, "first_name": "Pawel", "last_name": "Kowalski", "format": "first.last", "username": "pawel.kowalski2", "created_at": "2026-02-13 12:00:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Użytkownik wchodzi na strone i widzi formularz. Wpisuje imie “Jan” i nazwisko “Kowalski”. Po kliknieciu “Generuj” widzi wynik: “Twoj login: jan.kowalski”. Login zostaje zapisany do pliku JSON.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Użytkownik wpisuje “Zolnierczyk” - system generuje “zolnierczyk” (bez polskich znakow). Pod formularzem widzi tabele z ostatnimi 10 loginami. Przy pustym imieniu widzi komunikat “Imie jest wymagane”.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik wybiera format “i.nazwisko” i wpisuje “Jan Kowalski”. System sprawdza, że “j.kowalski” już istnieje i proponuje “j.kowalski2”. Użytkownik może też wybrać format “nazwisko.i” i dostanie “kowalski.j”. Historia pokazuje wszystkie wygenerowane loginy z mozliwoscia usuwania.
Usuwanie polskich znakow:
function removePolishChars($text) { $polish = ['a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z']; $ascii = ['a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z']; return str_replace($polish, $ascii, $text);}Generowanie loginu w różnych formatach:
function generateUsername($firstName, $lastName, $format) { $first = strtolower(removePolishChars($firstName)); $last = strtolower(removePolishChars($lastName));
switch ($format) { case 'first.last': return $first . '.' . $last; case 'flast': return substr($first, 0, 1) . $last; case 'last.first': return $last . '.' . $first; case 'first_last': return $first . '_' . $last; default: return $first . '.' . $last; }}Sprawdzanie unikalnosci i dodawanie numeru:
function ensureUnique($username, $existingUsernames) { if (!in_array($username, $existingUsernames)) { return $username; }
$counter = 2; while (in_array($username . $counter, $existingUsernames)) { $counter++; } return $username . $counter;}
// Użycie:$data = json_decode(file_get_contents('usernames.json'), true);$existing = array_column($data['usernames'], 'username');$uniqueUsername = ensureUnique($generatedUsername, $existing);Walidacja imienia/nazwiska:
function validateName($name, $fieldName) { if (empty(trim($name))) { return "$fieldName jest wymagane"; } if (strlen($name) < 2) { return "$fieldName musi mieć co najmniej 2 znaki"; } if (!preg_match('/^[a-zA-ZacelnoszzACELNOSZZ\s\-]+$/u', $name)) { return "$fieldName może zawierac tylko litery, spacje i myslnik"; } return null; // brak błędu}Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!