Compare commits
12 Commits
51c70bf43f
..
webdev
| Author | SHA1 | Date | |
|---|---|---|---|
|
87a58068f0
|
|||
|
31602977b7
|
|||
|
bbffb741a4
|
|||
|
a0c0cef41b
|
|||
|
b68b7f2824
|
|||
|
461a1f4853
|
|||
|
1ee47f62e6
|
|||
|
e57c21386d
|
|||
|
9f1565abef
|
|||
|
d6e07cdcb6
|
|||
|
7e51bf1271
|
|||
|
5281043af6
|
+5
-4
@@ -36,7 +36,8 @@ CREATE TABLE Utenti(
|
|||||||
nome VARCHAR(30),
|
nome VARCHAR(30),
|
||||||
cognome VARCHAR(18),
|
cognome VARCHAR(18),
|
||||||
email VARCHAR(255) UNIQUE NOT NULL,
|
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)
|
-- 3. INSERIMENTO DATI (INSERT INTO)
|
||||||
@@ -78,6 +79,6 @@ INSERT INTO Statistiche_Social (id_fascia, piattaforma, minuti_medi_giornalieri,
|
|||||||
-- Login utente esempio
|
-- Login utente esempio
|
||||||
-- Email: jeevacation@gmail.com
|
-- Email: jeevacation@gmail.com
|
||||||
-- Password: changeme
|
-- Password: changeme
|
||||||
INSERT INTO Utenti(nome,cognome,email,password) VALUES
|
INSERT INTO Utenti(nome,cognome,email,password,ruolo) VALUES
|
||||||
('Jeffrey', 'Epstein', 'jeevacation@gmail.com', '$2y$10$1ZILQ71xxMjaAxDs2A6/Iut8UJfBPEGkeEuZgoIkVDapbNYUACxtW'),
|
('Jeffrey', 'Epstein', 'jeevacation@gmail.com', '$2y$10$1ZILQ71xxMjaAxDs2A6/Iut8UJfBPEGkeEuZgoIkVDapbNYUACxtW', 'gestore'),
|
||||||
('Andrea', 'Fiorencis', 'andrea@fiorencis.eu','$2y$10$y7fs8u4UOFJW5ds/dO84KumTxG2kh4jCubb1W0mAHzgmBZKRqA8Va');
|
('Andrea', 'Fiorencis', 'andrea@fiorencis.eu','$2y$10$y7fs8u4UOFJW5ds/dO84KumTxG2kh4jCubb1W0mAHzgmBZKRqA8Va', 'gestore');
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
$host = 'localhost';
|
||||||
|
$username = 'root';
|
||||||
|
$password = '';
|
||||||
|
$database = 'GenZ_Usage_Stats';
|
||||||
|
|
||||||
|
// Creazione connessione
|
||||||
|
$conn = mysqli_connect($host, $username, $password, $database);
|
||||||
|
|
||||||
|
// Controllo connessione
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("Connessione fallita: " . $conn->connect_error);
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
<!-- RICHIESTA FILA A -->
|
||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
include 'db_conf.php';
|
||||||
|
|
||||||
|
// Query per ottenere il tempo totale di utilizzo giornaliero aggregato per fascia d'età
|
||||||
|
$sql = "SELECT f.range_eta, SUM(s.ore_medie_giornaliere) AS ore_totali
|
||||||
|
FROM Statistiche_Dispositivi s
|
||||||
|
JOIN Fasce_Eta f ON f.id_fascia=s.id_fascia
|
||||||
|
GROUP BY f.id_fascia, f.range_eta
|
||||||
|
ORDER BY f.id_fascia ASC";
|
||||||
|
$resultDispositivi = $conn->query($sql);
|
||||||
|
|
||||||
|
// Interruzione in caso di errore nella richiesta
|
||||||
|
if ($resultDispositivi === false){
|
||||||
|
die("Errore nella query: " . $conn->error);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>GenZ Digital Hub</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php if (isset($_SESSION['id'])): ?>
|
||||||
|
<h1>Benvenuto, <?php echo htmlspecialchars($_SESSION['name'] . ' ' . $_SESSION['surname']); ?>!</h1>
|
||||||
|
<p><a href="logout.php">Logout</a></p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h2>Tempo Totale di Utilizzo Giornaliero per Fascia d'Età</h2>
|
||||||
|
<table border="1" cellpadding="10" cellspacing="0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Fascia d'Età</th>
|
||||||
|
<th>Ore Totali Giornaliere</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php while ($row = $resultDispositivi->fetch_assoc()): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo htmlspecialchars($row['range_eta']); ?></td>
|
||||||
|
<td><?php echo number_format($row['ore_totali'], 2, ',', '.'); ?> ore</td>
|
||||||
|
</tr>
|
||||||
|
<?php endwhile; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php else: ?>
|
||||||
|
<h1>Benvenuto su GenZ Digital Hub</h1>
|
||||||
|
<p><a href="login.php">Accedi</a> o <a href="register.php">Registrati</a> per visualizzare le statistiche.</p>
|
||||||
|
<?php endif; ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="it">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Accesso</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
include 'db_conf.php';
|
||||||
|
|
||||||
|
$error = '';
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$password = $_POST['password'];
|
||||||
|
|
||||||
|
$sql = "SELECT id_utente, nome, cognome, password FROM Utenti WHERE email = ?";
|
||||||
|
if ($stmt = $conn->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.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<form action="" method="POST">
|
||||||
|
<h2>Login</h2>
|
||||||
|
<label for="email">Indirizzo e-mail:</label>
|
||||||
|
<input type="email" id="email" name="email" required><br>
|
||||||
|
<label for="password">Password:</label>
|
||||||
|
<input type="password" id="password" name="password" required><br>
|
||||||
|
<?php if ($error): ?>
|
||||||
|
<p style="color: red; text-align: center;"><?php echo htmlspecialchars($error); ?></p>
|
||||||
|
<?php endif; ?>
|
||||||
|
<br>
|
||||||
|
<input type="submit" value="Accedi">
|
||||||
|
<br><br>
|
||||||
|
<p>Non hai un account? <a href="register.php">Registrati</a></p>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
session_destroy();
|
||||||
|
header('Location: index.php');
|
||||||
|
exit();
|
||||||
|
?>
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
include 'db_conf.php';
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="it">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Registrazione - TechStore</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
if($_POST['password'] !== $_POST['confirm_password']){
|
||||||
|
echo "<p style='color: red; text-align: center;'>Le password non corrispondono.</p>";
|
||||||
|
}
|
||||||
|
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 "<p style='color: green; text-align: center;'>Registrazione avvenuta con successo! <a href=\"login.php\">Accedi</a></p>";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
echo "Errore: " . $conn->error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<form action="" method="POST">
|
||||||
|
<h2>Registrazione</h2>
|
||||||
|
<label for="name">Nome:</label>
|
||||||
|
<input type="text" id="name" name="name" required><br>
|
||||||
|
<label for="surname">Cognome:</label>
|
||||||
|
<input type="text" id="surname" name="surname" required><br>
|
||||||
|
<label for="email">Indirizzo e-mail:</label>
|
||||||
|
<input type="email" id="email" name="email" required><br>
|
||||||
|
<label for="password">Password:</label>
|
||||||
|
<input type="password" id="password" name="password" required><br>
|
||||||
|
<label for="confirm_password">Conferma password:</label>
|
||||||
|
<input type="password" id="confirm_password" name="confirm_password" required><br><br>
|
||||||
|
<input type="submit" value="Registrati">
|
||||||
|
<br><br>
|
||||||
|
<p>Hai già un account? <a href="login.php">Accedi</a></p>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user