Przejdź do głównej zawartości

Generator nicków

Stworzysz Generator nicków - aplikację umożliwiającą tworzenie unikalnych nazw użytkownika na podstawie podanych parametrów. Użytkownik może podać swoje imię, wybrać styl nicka i otrzymać propozycje. System zapisuje historię wygenerowanych nicków i pozwala na różne wzorce generowania.

Czego się nauczysz?

  • Generowania losowych danych w PHP (rand, shuffle, array_rand)
  • Manipulacji stringami (substr, strtolower, ucfirst)
  • Tworzenia wzorców i szablonów
  • Walidacji i sanityzacji danych wejściowych
  • Pracy z tablicami słowników

W prawdziwej pracy...

Generatory danych są używane wszędzie: generowanie tymczasowych haseł, kodów promocyjnych, identyfikatorów zamówień, unikalnych URL-i. Umiejętność pracy z losowością, wzorcami i manipulacją stringami jest fundamentem dla wielu funkcji w systemach e-commerce, grach online, platformach społecznościowych i aplikacjach biznesowych.

  1. Formularz generowania Użytkownik podaje swoje imię (lub słowo bazowe) i klika przycisk “Generuj”. System tworzy nick na podstawie tego słowa z dodaniem losowych elementów.

  2. Wyświetlenie wyniku Wygenerowany nick jest wyświetlany w czytelny sposób z możliwością skopiowania do schowka (JavaScript).

  3. Zapis do historii Każdy wygenerowany nick jest zapisywany do pliku JSON z datą utworzenia.

  4. Przeglądanie historii Użytkownik może zobaczyć listę wszystkich wygenerowanych nicków.

Przykładowa struktura pliku JSON:

{
"nicknames": [
{
"id": 1,
"base_word": "Kamil",
"nickname": "KamilX42",
"pattern": "word_number",
"created_at": "2026-02-13 10:30:00"
},
{
"id": 2,
"base_word": "Anna",
"nickname": "ShadowAnna",
"pattern": "prefix_word",
"created_at": "2026-02-13 10:35:00"
},
{
"id": 3,
"base_word": "Pro",
"nickname": "ProGamer2026",
"pattern": "word_suffix_year",
"created_at": "2026-02-13 11:00:00"
}
]
}

Wymagane funkcje:

  • Formularz z polem na imię/słowo bazowe
  • Walidacja danych w PHP (niepuste, tylko litery)
  • Generowanie nicka: słowo + losowa liczba (np. “Kamil42”)
  • Wyświetlenie wyniku
  • Zapis do pliku JSON
  • Lista historii wygenerowanych nicków

Przykładowy scenariusz:

Użytkownik wpisuje “Kamil” i klika “Generuj”. System dodaje losową liczbę 1-999 i wyświetla “Kamil742”. Nick zostaje zapisany do historii.

Ocena: 3.0

Walidacja słowa bazowego:

$baseWord = trim($_POST['base_word'] ?? '');
if (empty($baseWord)) {
$errors[] = "Podaj słowo bazowe";
}
if (!preg_match('/^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+$/u', $baseWord)) {
$errors[] = "Słowo może zawierać tylko litery";
}
if (strlen($baseWord) < 2 || strlen($baseWord) > 20) {
$errors[] = "Słowo musi mieć 2-20 znaków";
}

Prosty generator nicków:

function generateNickname(string $baseWord, string $pattern = 'word_number'): string {
$baseWord = ucfirst(strtolower($baseWord));
switch ($pattern) {
case 'word_number':
return $baseWord . rand(1, 999);
case 'prefix_word':
$prefixes = ['Dark', 'Pro', 'Night', 'Shadow', 'Cyber', 'Ultra', 'Mega'];
return $prefixes[array_rand($prefixes)] . $baseWord;
case 'word_suffix':
$suffixes = ['Master', 'King', 'Lord', 'Star', 'Hero', 'X', 'Pro'];
return $baseWord . $suffixes[array_rand($suffixes)];
case 'word_year':
return $baseWord . date('Y');
default:
return $baseWord . rand(1, 999);
}
}

Generowanie wielu nicków:

function generateMultiple(string $baseWord, string $pattern, int $count = 5): array {
$nicknames = [];
$attempts = 0;
$maxAttempts = $count * 3; // zabezpieczenie przed nieskończoną pętlą
while (count($nicknames) < $count && $attempts < $maxAttempts) {
$nick = generateNickname($baseWord, $pattern);
if (!in_array($nick, $nicknames)) {
$nicknames[] = $nick;
}
$attempts++;
}
return $nicknames;
}

Leet speak (wariant C):

function toLeetSpeak(string $text): string {
$replacements = [
'a' => '4', 'A' => '4',
'e' => '3', 'E' => '3',
'i' => '1', 'I' => '1',
'o' => '0', 'O' => '0',
's' => '5', 'S' => '5',
't' => '7', 'T' => '7',
];
return strtr($text, $replacements);
}

JavaScript - kopiowanie do schowka:

function copyToClipboard(text) {
navigator.clipboard.writeText(text).then(() => {
alert('Skopiowano: ' + text);
}).catch(err => {
console.error('Błąd kopiowania:', err);
});
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazać postępy - nawet małe kroki się liczą
  • Wyjaśnić wątpliwości - pytaj, nie zgaduj
  • Skonsultować rozwiązania - feedback pomoże Ci się rozwijać

Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!