Przejdź do głównej zawartości

Generator nazw użytkownika

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?

  • Przetwarzania i formatowania łańcuchów tekstowych w PHP
  • Usuwania polskich znakow diakrytycznych
  • Sprawdzania unikalnosci danych w pliku JSON
  • Różnych strategii generowania identyfikatorow

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.

  1. Formularz wprowadzania danych Użytkownik podaje imie, nazwisko oraz opcjonalnie dodatkowe dane (rok urodzenia, numer). Wybiera też format loginu z listy.

  2. Generowanie loginu System łączy dane według wybranego formatu (np. “jan.kowalski”, “jkowalski”, “kowalski.j”), usuwa polskie znaki i konwertuje na małe litery.

  3. 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:

  • Formularz z polami: imie, nazwisko
  • Generowanie loginu w formacie imie.nazwisko
  • Konwersja na małe litery
  • Zapis każdego loginu do pliku JSON
  • Prosty interfejs CSS (czytelny formularz)

Przykładowy scenariusz:

Uż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.

Ocena: 3.0

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:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!