diff --git a/assets/Gener_Z.sql b/assets/Gener_Z.sql index a4804e4..6deac24 100644 --- a/assets/Gener_Z.sql +++ b/assets/Gener_Z.sql @@ -36,7 +36,8 @@ CREATE TABLE Utenti( nome VARCHAR(30), cognome VARCHAR(18), email VARCHAR(255) UNIQUE NOT NULL, - password VARCHAR(255) NOT NULL + password VARCHAR(255) NOT NULL, + ruolo VARCHAR(16) DEFAULT 'utente' ); -- 3. INSERIMENTO DATI (INSERT INTO) @@ -78,6 +79,6 @@ INSERT INTO Statistiche_Social (id_fascia, piattaforma, minuti_medi_giornalieri, -- Login utente esempio -- Email: jeevacation@gmail.com -- Password: changeme -INSERT INTO Utenti(nome,cognome,email,password) VALUES -('Jeffrey', 'Epstein', 'jeevacation@gmail.com', '$2y$10$1ZILQ71xxMjaAxDs2A6/Iut8UJfBPEGkeEuZgoIkVDapbNYUACxtW'), -('Andrea', 'Fiorencis', 'andrea@fiorencis.eu','$2y$10$y7fs8u4UOFJW5ds/dO84KumTxG2kh4jCubb1W0mAHzgmBZKRqA8Va'); \ No newline at end of file +INSERT INTO Utenti(nome,cognome,email,password,ruolo) VALUES +('Jeffrey', 'Epstein', 'jeevacation@gmail.com', '$2y$10$1ZILQ71xxMjaAxDs2A6/Iut8UJfBPEGkeEuZgoIkVDapbNYUACxtW', 'gestore'), +('Andrea', 'Fiorencis', 'andrea@fiorencis.eu','$2y$10$y7fs8u4UOFJW5ds/dO84KumTxG2kh4jCubb1W0mAHzgmBZKRqA8Va', 'gestore'); \ No newline at end of file diff --git a/db_conf.php b/db_conf.php new file mode 100644 index 0000000..3b9b3de --- /dev/null +++ b/db_conf.php @@ -0,0 +1,14 @@ +connect_error) { + die("Connessione fallita: " . $conn->connect_error); +} +?> diff --git a/index.php b/index.php new file mode 100644 index 0000000..d65491e --- /dev/null +++ b/index.php @@ -0,0 +1,56 @@ + +query($sql); + +// Interruzione in caso di errore nella richiesta +if ($resultDispositivi === false){ + die("Errore nella query: " . $conn->error); +} +?> + + + + + + GenZ Digital Hub + + + + +

Benvenuto, !

+

Logout

+ +
+ +

Tempo Totale di Utilizzo Giornaliero per Fascia d'Età

+ + + + + + + + + fetch_assoc()): ?> + + + + + + +
Fascia d'EtàOre Totali Giornaliere
ore
+ +

Benvenuto su GenZ Digital Hub

+

Accedi o Registrati per visualizzare le statistiche.

+ + + \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..255845a --- /dev/null +++ b/login.php @@ -0,0 +1,64 @@ + + + + + + Accesso + + + + prepare($sql)) { + $stmt->bind_param("s", $email); + $stmt->execute(); + $stmt->store_result(); + + if ($stmt->num_rows > 0) { + $stmt->bind_result($user_id, $name, $surname, $hashed_password); + $stmt->fetch(); + + if (password_verify($password, $hashed_password)) { + $_SESSION['id'] = $user_id; + $_SESSION['name'] = $name; + $_SESSION['surname'] = $surname; + header('Location: index.php'); + exit(); + } else { + $error = 'Credenziali errate.'; + } + } else { + $error = 'Credenziali errate.'; + } + + $stmt->close(); + } else { + $error = 'Errore nel database.'; + } + } + ?> +
+

Login

+ +
+ +
+ +

+ +
+ +

+

Non hai un account? Registrati

+
+ + \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..2ac2507 --- /dev/null +++ b/logout.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/register.php b/register.php new file mode 100644 index 0000000..fcb9ed4 --- /dev/null +++ b/register.php @@ -0,0 +1,56 @@ + + + + + + + + Registrazione - TechStore + + + + Le password non corrispondono.

"; + } + else{ + $sql = "INSERT INTO Utenti (nome, cognome, email, password) VALUES (?, ?, ?, ?)"; + if($stmt = $conn->prepare($sql)){ + $stmt->bind_param("ssss", $name, $surname, $email, $password); + + $name = $_POST['name']; + $surname = $_POST['surname']; + $email = $_POST['email']; + $password = password_hash($_POST['password'], PASSWORD_BCRYPT); + $stmt->execute(); + + echo "

Registrazione avvenuta con successo! Accedi

"; + } + else{ + echo "Errore: " . $conn->error; + } + } + } + ?> + +
+

Registrazione

+ +
+ +
+ +
+ +
+ +

+ +

+

Hai già un account? Accedi

+
+ + diff --git a/style.css b/style.css new file mode 100644 index 0000000..3e06d02 --- /dev/null +++ b/style.css @@ -0,0 +1,208 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%); + color: #e0e0e0; + line-height: 1.6; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 20px; +} + +/* Typography */ +h1, h2 { + color: #00d4ff; + margin-bottom: 20px; + text-align: center; + /* Opzionale: aggiunge un leggero effetto di glow alle intestazioni */ + /* text-shadow: 0 0 10px rgba(0, 212, 255, 0.5); */ +} + +h1 { + font-size: 2.5rem; + margin-bottom: 10px; +} + +h2 { + font-size: 2rem; + margin-bottom: 5px; +} + +p { + margin-bottom: 20px; + text-align: center; +} + +/* Links */ +a { + color: #00d4ff; + text-decoration: none; + transition: color 0.3s ease; +} + +a:hover { + color: #0099cc; + text-decoration: underline; +} + +/* Forms */ +form { + background: rgba(255, 255, 255, 0.05); + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 15px; + padding: 40px; + width: 100%; + max-width: 400px; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); + animation: fadeIn 0.5s ease-in-out; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(-20px); } + to { opacity: 1; transform: translateY(0); } +} + +label { + display: block; + margin-bottom: 8px; + font-weight: 600; + color: #b0b0b0; +} + +input[type="text"], +input[type="email"], +input[type="password"] { + width: 100%; + padding: 12px 15px; + margin-bottom: 20px; + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 8px; + background: rgba(255, 255, 255, 0.1); + color: #e0e0e0; + font-size: 16px; + transition: all 0.3s ease; +} + +input[type="text"]:focus, +input[type="email"]:focus, +input[type="password"]:focus { + outline: none; + border-color: #00d4ff; + box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.2); + background: rgba(255, 255, 255, 0.15); +} + +input[type="submit"] { + width: 100%; + padding: 12px; + background: linear-gradient(45deg, #00d4ff, #0099cc); + color: white; + border: none; + border-radius: 8px; + font-size: 16px; + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + text-transform: uppercase; + letter-spacing: 1px; +} + +input[type="submit"]:hover { + background: linear-gradient(45deg, #0099cc, #0077aa); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 212, 255, 0.3); +} + +/* Error Messages */ +p[style*="color: red"] { + background: rgba(255, 0, 0, 0.1); + border: 1px solid rgba(255, 0, 0, 0.3); + border-radius: 5px; + padding: 10px; + margin-bottom: 20px; + color: #ff6b6b !important; +} + +p[style*="color: green"] { + background: rgba(0, 255, 0, 0.1); + border: 1px solid rgba(0, 255, 0, 0.3); + border-radius: 5px; + padding: 10px; + margin-bottom: 20px; + color: #51cf66 !important; +} + +/* Horizontal Rule */ +hr { + border: none; + height: 2px; + background: linear-gradient(90deg, transparent, #00d4ff, transparent); + margin: 30px 0; +} + +/* Table Styles */ +table { + width: 100%; + max-width: 800px; + margin: 20px auto; + border-collapse: collapse; + background: rgba(255, 255, 255, 0.05); + backdrop-filter: blur(10px); + border-radius: 10px; + overflow: hidden; + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); +} + +thead { + background: linear-gradient(45deg, #00d4ff, #0099cc); +} + +th, td { + padding: 15px; + text-align: left; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +th { + font-weight: 600; + color: white; + text-transform: uppercase; + letter-spacing: 1px; +} + +td { + color: #e0e0e0; +} + +tbody tr:hover { + background: rgba(255, 255, 255, 0.05); +} + +/* Responsive Design */ +@media (max-width: 768px) { + body { + padding: 10px; + } + + form { + padding: 20px; + max-width: 100%; + } + + table { + font-size: 14px; + } + + th, td { + padding: 10px; + } +} \ No newline at end of file