Mancata osservanza delle regole del Forum
Ciao a tutti ho creato una pagina index.php e una pagina accedi.php che mi reindirizza alla home.php nella home.php ho inserito che l'utente loggato possa inserire un post di tipo testuale però vorrei che quando il post viene pubblicato deve uscire anche nome e cognome dell'utente che lo ha pubblicato (TIPO FACEBOOK) come faccio? sono parecchi giorni che so lavorando ma niente..... Ho creato anche delle tabelle nel databse ovvero POST e REGISTRAZIONE
index.php 👇
accedi.php 👇
home.php 👇
Nella pagina home.php sopra mi esce anche ID autore non valido nella sessione.
index.php 👇
PHP:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registrazione</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
}
.container {
width: 50%;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0px 0px 10px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 20px;
}
label {
font-weight: bold;
}
input[type="text"],
input[type="email"],
input[type="password"] {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
.message {
margin-top: 20px;
padding: 10px;
border-radius: 5px;
}
.success {
background-color: #d4edda;
color: #155724;
}
.error {
background-color: #f8d7da;
color: #721c24;
}
</style>
</head>
<body>
<div class="container">
<h2>Registrazione</h2>
<form id="registrationForm" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<div class="form-group">
<label for="name">Nome:</label>
<input type="text" id="name" name="name" required>
</div>
<div class="form-group">
<label for="surname">Cognome:</label>
<input type="text" id="surname" name="surname" required>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">Registrati</button>
</form>
<p>Sei già registrato o ti sei appena registrato? <a href="accedi.php">Accedi qui</a></p>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Connessione al database
$servername = "";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
// Verifica della connessione
if ($conn->connect_error) {
die("Connessione fallita: " . $conn->connect_error);
}
// Recupero dei dati dal form
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$password = $_POST['password'];
// Query per verificare se l'email esiste già nel database
$check_query = "SELECT * FROM registrazione WHERE email='$email'";
$result = $conn->query($check_query);
if ($result->num_rows > 0) {
// Email già presente nel database, mostra un messaggio di errore
echo "<div class='message error'>Email già registrata!</div>";
} else {
// Query per l'inserimento dei dati nel database
$sql = "INSERT INTO registrazione (nome, cognome, email, password)
VALUES ('$name', '$surname', '$email', '$password')";
if ($conn->query($sql) === TRUE) {
echo "<div class='message success'>Registrazione avvenuta con successo!</div>";
} else {
echo "<div class='message error'>Errore durante la registrazione: " . $conn->error . "</div>";
}
}
// Chiusura della connessione
$conn->close();
}
?>
</div>
</body>
</html>
accedi.php 👇
PHP:
<?php
session_start(); // Inizia la sessione
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Connessione al database
$servername = "";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
// Verifica della connessione
if ($conn->connect_error) {
die("Connessione fallita: " . $conn->connect_error);
}
// Recupero dei dati dal form
$email = $_POST['email'];
$password = $_POST['password'];
// Query per verificare le credenziali
$sql = "SELECT * FROM registrazione WHERE email='$email' AND password='$password'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
// Ottieni i dettagli dell'utente dal risultato della query
$row = $result->fetch_assoc();
// Imposta la sessione di accesso
$_SESSION['logged_in'] = true;
// Salva ulteriori dettagli dell'utente nella sessione
$_SESSION['user_id'] = $row['id']; // Esempio: ID dell'utente
$_SESSION['user_name'] = $row['nome']; // Esempio: Nome dell'utente
// Effettua il reindirizzamento
header("Location: home.php");
exit; // Assicura che lo script si fermi dopo il reindirizzamento
} else {
// Credenziali errate, mostra un messaggio di errore
$error_message = "Credenziali non valide. Riprova.";
}
// Chiusura della connessione
$conn->close();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
}
.container {
width: 50%;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0px 0px 10px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 20px;
}
label {
font-weight: bold;
}
input[type="email"],
input[type="password"] {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
.error-message {
color: #ff0000;
}
</style>
</head>
<body>
<div class="container">
<h2>Login</h2>
<form id="loginForm" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<div class="form-group">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<button type="submit">Accedi</button>
<?php if(isset($error_message)) { ?>
<p class="error-message"><?php echo $error_message; ?></p>
<?php } ?>
</form>
</div>
</body>
</html>
home.php 👇
PHP:
<?php
session_start();
// Controlla se l'utente è autenticato
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
// Se l'utente non è autenticato, reindirizzalo alla pagina di accesso
header('Location: accedi.php');
exit;
}
// Variabili per la connessione al database
$servername = "";
$username = "";
$password = "";
$dbname = "";
// Variabile per memorizzare l'ultimo post pubblicato
$ultimo_post = "";
// Se il form è stato inviato, inserisci il post nel database
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Verifica se l'ID dell'autore è stato impostato correttamente nella sessione
if(isset($_SESSION['autore_id']) && !empty($_SESSION['autore_id'])) {
// Connessione al database
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connessione al database fallita: " . mysqli_connect_error());
}
// Recupero dell'ID dell'autore dalla sessione
$autore_id = $_SESSION['autore_id'];
// Recupero dei dati dal form
$titolo = $_POST['titolo'];
$contenuto = $_POST['contenuto'];
// Inserimento del post nel database
$sql = "INSERT INTO posts (titolo, contenuto, autore_id) VALUES ('$titolo', '$contenuto', '$autore_id')";
if (mysqli_query($conn, $sql)) {
$ultimo_post = "Post pubblicato con successo: Titolo - $titolo, Contenuto - $contenuto";
} else {
echo "Errore durante la pubblicazione del post: " . mysqli_error($conn);
}
// Chiusura della connessione
mysqli_close($conn);
} else {
echo "ID autore non valido nella sessione.";
}
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog</title>
</head>
<body>
<h1>Home</h1>
<!-- Form per inserire un nuovo post -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label for="titolo">Titolo:</label><br>
<input type="text" id="titolo" name="titolo" required><br>
<label for="contenuto">Contenuto:</label><br>
<textarea id="contenuto" name="contenuto" rows="4" cols="50" required></textarea><br>
<!-- Nome e cognome dell'utente verranno mostrati automaticamente -->
<br><br>
<input type="submit" value="Pubblica">
</form>
<hr>
<!-- Visualizzazione dell'ultimo post pubblicato -->
<?php if (!empty($ultimo_post)): ?>
<h2>Ultimo Post Pubblicato:</h2>
<p><?php echo $ultimo_post; ?></p>
<?php endif; ?>
<!-- Visualizzazione dei post esistenti -->
<h2>Ultimi Post:</h2>
<?php
// Connessione al database
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connessione al database fallita: " . mysqli_connect_error());
}
// Query per selezionare tutti i post con nome e cognome dell'autore dalla tabella registrazione
$sql = "SELECT posts.*, registrazione.nome AS autore_nome, registrazione.cognome AS autore_cognome FROM posts INNER JOIN registrazione ON posts.autore_id = registrazione.id ORDER BY posts.id DESC";
$result = mysqli_query($conn, $sql);
// Visualizzazione dei post
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<h3>" . $row['titolo'] . "</h3>";
echo "<p>" . $row['contenuto'] . "</p>";
echo "<p>" . $row['autore_nome'] . "</p>";
echo "<p>" . $row['autore_cognome'] . "</p>";
echo "<hr>";
}
} else {
echo "Nessun post trovato.";
}
// Chiusura della connessione
mysqli_close($conn);
?>
</body>
</html>
Nella pagina home.php sopra mi esce anche ID autore non valido nella sessione.
Ultima modifica da un moderatore: