1. Formularz rejestracji
Po wysłaniu formularza dane trafią do pliku process.php, który:
- sprawdzi poprawność danych po stronie serwera;
- połączy się z bazą MySQL i sprawdzi, czy email już istnieje;
- w razie poprawnych danych zapisze nowego użytkownika z zahashowanym hasłem;
- wyświetli odpowiedni komunikat (sukces / błąd).
2. Przykładowe rozwiązanie — plik process.php
<?php
// Dane połączenia z bazą — dostosuj do swojego środowiska
$host = "localhost";
$user = "root";
$pass = "";
$db = "database";
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("Błąd połączenia z bazą: " . $conn->connect_error);
}
// Pobranie danych z formularza (podstawowe oczyszczanie)
$username = trim($_POST["username"] ?? "");
$email = trim($_POST["email"] ?? "");
$password = $_POST["password"] ?? "";
// Prosta walidacja po stronie serwera
$errors = [];
if (strlen($username) < 3) {
$errors[] = "Nazwa użytkownika musi mieć co najmniej 3 znaki.";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Podano nieprawidłowy adres e-mail.";
}
if (strlen($password) < 6) {
$errors[] = "Hasło musi mieć co najmniej 6 znaków.";
}
// Jeśli są błędy — wyświetlamy je i kończymy skrypt
if (!empty($errors)) {
foreach ($errors as $e) {
echo "<p style='color:#ff7777'>$e</p>";
}
echo "<p><a href='register.html'>Powrót do formularza</a></p>";
exit;
}
// Sprawdzenie, czy email już istnieje (prepared statement)
$sql = "SELECT id FROM users WHERE email = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
echo "<p style='color:#ff7777'>Podany e-mail jest już zarejestrowany.</p>";
echo "<p><a href='register.html'>Powrót do formularza</a></p>";
$stmt->close();
$conn->close();
exit;
}
$stmt->close();
// Hashowanie hasła
$hash = password_hash($password, PASSWORD_DEFAULT);
// Dodawanie nowego użytkownika
$insertSql = "INSERT INTO users (username, email, password) VALUES (?, ?, ?)";
$insert = $conn->prepare($insertSql);
$insert->bind_param("sss", $username, $email, $hash);
if ($insert->execute()) {
echo "<p style='color:#00ff99'>Rejestracja zakończona sukcesem!</p>";
} else {
echo "<p style='color:#ff7777'>Błąd podczas rejestracji: " . $conn->error . "</p>";
}
$insert->close();
$conn->close();
?>