PROBLEMA Quando il post viene pubblicato deve uscire anche nome e cognome dell'utente

Gigi_xx_1

Nuovo Utente
20
0
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 👇

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:

Moffetta88

Moderatore
Staff Forum
Utente Èlite
20,558
12,947
CPU
i5-4690
Dissipatore
DEEPCOOL CAPTAIN 240EX
Scheda Madre
MSI Z97 U3 PLUS
HDD
KINGSTON SSD KC400 240GB
RAM
24GB BALLISTIX SPORT @2133MHz
GPU
STRIX GTX980 DC2OC
Audio
INTEGRATA
Monitor
AOC G2590VXQ
PSU
BEQUIET! System Power 7 500W
Case
DEEPCOOL MATREXX 55
Periferiche
NESSUNA
Net
EOLO 100
OS
UBUNTU/WINDOWS11
Mah, banalmente non imposti da nessuna parte il $_SESSION['autore_id'].
Se noti, nel login l'hai chiamato $_SESSION['user_id']
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!