Hi! Could we please enable some services and cookies to improve your experience and our website?
No, thanks.
Okay!
Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code
CREATE DATABASE IF NOT EXISTS user_auth;
USE user_auth;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Создаем пользователя для доступа к базе (замените 'your_password' на свой пароль)
CREATE USER 'auth_user'@'localhost' IDENTIFIED BY '123123';
GRANT ALL PRIVILEGES ON user_auth.* TO 'auth_user'@'localhost';
FLUSH PRIVILEGES;
SQL Server:
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
MySQL 9.3.0
MariaDB 11.4
MariaDB 11.8
MariaDB 10
MariaDB 10 Sakila (ReadOnly)
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
PostgreSQL 16
PostgreSQL 17 + PostGIS
PostgreSQL 17 + PostGIS WorkShop (ReadOnly)
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
RedDatabase 5.0
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
ClickHouse
Run SQL code
Save snippet
ER Diagram
<?php
require 'config.php';
$errors = [];
$username = '';
$email = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST['username']);
$email = trim($_POST['email']);
$password = trim($_POST['password']);
$confirm_password = trim($_POST['confirm_password']);
// Валидация
if (empty($username)) {
$errors['username'] = 'Имя пользователя обязательно';
} elseif (strlen($username) < 3) {
$errors['username'] = 'Имя пользователя должно быть не менее 3 символов';
}
if (empty($email)) {
$errors['email'] = 'Email обязателен';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Некорректный email';
}
if (empty($password)) {
$errors['password'] = 'Пароль обязателен';
} elseif (strlen($password) < 6) {
$errors['password'] = 'Пароль должен быть не менее 6 символов';
}
if ($password !== $confirm_password) {
$errors['confirm_password'] = 'Пароли не совпадают';
}
// Проверка уникальности username и email
if (empty($errors)) {
$stmt = $pdo->prepare("SELECT id FROM users WHERE username = ? OR email = ?");
$stmt->execute([$username, $email]);
if ($stmt->fetch()) {
$errors['general'] = 'Пользователь с таким именем или email уже существует';
}
}
// Регистрация пользователя
if (empty($errors)) {
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
if ($stmt->execute([$username, $email, $hashed_password])) {
$_SESSION['message'] = 'Регистрация прошла успешно! Теперь вы можете войти.';
redirect('login.php');
} else {
$errors['general'] = 'Ошибка при регистрации. Попробуйте позже.';
}
}
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Регистрация</title>
<style>
body { font-family: Arial, sans-serif; max-width: 400px; margin: 0 auto; padding: 20px; }
.alert { padding: 10px; margin-bottom: 15px; border-radius: 4px; }
.alert.error { background-color: #ffdddd; color: #d8000c; }
.alert.success { background-color: #ddffdd; color: #4F8A10; }
.form-group { margin-bottom: 15px; }
label { display: block; margin-bottom: 5px; }
input { width: 100%; padding: 8px; box-sizing: border-box; border: 1px solid #ddd; border-radius: 4px; }
.error-text { color: #d8000c; font-size: 0.8em; margin-top: 5px; }
button { background: #4CAF50; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; }
button:hover { background: #45a049; }
.login-link { margin-top: 15px; text-align: center; }
</style>
</head>
<body>
<h2>Регистрация</h2>
<?php if (!empty($errors['general'])): ?>
<div class="alert error"><?= $errors['general'] ?></div>
<?php endif; ?>
<form method="post" action="register.php">
<div class="form-group">
<label for="username">Имя пользователя:</label>
<input type="text" name="username" id="username" value="<?= htmlspecialchars($username) ?>" required>
<?php if (!empty($errors['username'])): ?>
<div class="error-text"><?= $errors['username'] ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" name="email" id="email" value="<?= htmlspecialchars($email) ?>" required>
<?php if (!empty($errors['email'])): ?>
<div class="error-text"><?= $errors['email'] ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="password">Пароль:</label>
<input type="password" name="password" id="password" required>
<?php if (!empty($errors['password'])): ?>
<div class="error-text"><?= $errors['password'] ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="confirm_password">Подтвердите пароль:</label>
<input type="password" name="confirm_password" id="confirm_password" required>
<?php if (!empty($errors['confirm_password'])): ?>
<div class="error-text"><?= $errors['confirm_password'] ?></div>
<?php endif; ?>
</div>
<button type="submit">Зарегистрироваться</button>
</form>
<div class="login-link">
Уже есть аккаунт? <a href="login.php">Войти</a>
</div>
</body>
</html>
PHP version :
PHP 7.4
PHP 8.0
PHP 8.1
PHP 8.2
PHP 8.3
PHP 8.4
Run PHP Code
Save snippet