DOMANDA I dati inseriti da un utente non devono essere visti dall'altro

Pubblicità

Gigi_xx_1

Nuovo Utente
Messaggi
22
Reazioni
0
Ciao a tutti ho creato una rubrica e vorrei che i dati inseriti dall'utente 1 non vengano visti dall utente 2 e viceversa l'ho scriptato in php
 
Mancato utilizzo tag CODE
Questo è lo script di dove l'utente 1 deve vedere i dati inseriti precedentemente e l'utente 2 no, l'utente due deve vedere i dati suoi inseriti precedentemente

PHP:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Visualizza contatti</title>
        <link rel="icon" type="image/x-icon" href="[URL]https://thefutureita.altervista.org/boy.png[/URL]" />

    <style>
 
    save-button {
        background-color: #4CAF50; /* Cambiato il colore del pulsante in verde */
        color: white;
        border: none;
        border-radius: 4px;
        cursor: pointer;
    }
 
        table {
            width: 100%;
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid #dddddd;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
        .remove-button, .edit-button, .save-button, .cancel-button {
            background-color: #f44336;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
        .edit-button {
            background-color: #4CAF50;
        }
    </style>
</head>
<body>

<table id="contatti">
        <thead>
            <tr>
                <th>Nome</th>
                <th>Cognome</th>
                <th>Numero di Telefono</th>
                <th>Professione</th>
                <th>Email</th>
                <th>Indirizzo</th>
                <th>Paese</th>
                <th>Note</th>
                <th>Azioni</th>
            </tr>
        </thead>
        <tbody>
            <?php
        

            // Creazione della connessione
            $conn = new mysqli($servername, $username, $password, $dbname);

            // Verifica della connessione
            if ($conn->connect_error) {
                die("Connessione fallita: " . $conn->connect_error);
            }

            // Funzione per ottenere i valori da un campo e assicurarsi che siano sicuri per l'uso nel database
            function sanitize_input($conn, $data) {
                return mysqli_real_escape_string($conn, htmlspecialchars($data));
            }

            // Se il form è stato inviato
            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                // Verifica se l'ID e i nuovi valori sono stati inviati correttamente
                if (isset($_POST['id']) && isset($_POST['nome']) && isset($_POST['cognome']) && isset($_POST['numero_telefono']) && isset($_POST['professione']) && isset($_POST['email']) && isset($_POST['indirizzo']) && isset($_POST['paese']) && isset($_POST['note'])) {
                    // Prendi i valori inviati e sanitizzali
                    $id = sanitize_input($conn, $_POST['id']);
                    $nome = sanitize_input($conn, $_POST['nome']);
                    $cognome = sanitize_input($conn, $_POST['cognome']);
                    $numero_telefono = sanitize_input($conn, $_POST['numero_telefono']);
                    $professione = sanitize_input($conn, $_POST['professione']);
                    $email = sanitize_input($conn, $_POST['email']);
                    $indirizzo = sanitize_input($conn, $_POST['indirizzo']);
                    $paese = sanitize_input($conn, $_POST['paese']);
                    $note = sanitize_input($conn, $_POST['note']);

                    // Query SQL per aggiornare i dati del contatto
                    $sql = "UPDATE agenda SET nome='$nome', cognome='$cognome', numero_telefono='$numero_telefono', professione='$professione', email='$email', indirizzo='$indirizzo', paese='$paese', note='$note' WHERE id='$id'";

                    if ($conn->query($sql) === TRUE) {
                        echo "Record aggiornato con successo";
                    } else {
                        echo "Errore nell'aggiornamento del record: " . $conn->error;
                    }
                } else {
                    echo "Errore: tutti i campi devono essere compilati";
                }
            }

            // Se viene inviata una richiesta di rimozione del contatto
            if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET['remove_id'])) {
                $remove_id = sanitize_input($conn, $_GET['remove_id']);
                $sql = "DELETE FROM agenda WHERE id='$remove_id'";
                if ($conn->query($sql) === TRUE) {
                    echo "Record rimosso con successo";
                } else {
                    echo "Errore nella rimozione del record: " . $conn->error;
                }
            }

            // Query SQL per selezionare i dati dalla tabella agenda
            $sql = "SELECT * FROM agenda";
            $result = $conn->query($sql);

            // Output dei dati nella tabella
            if ($result->num_rows > 0) {
                while($row = $result->fetch_assoc()) {
                    echo "<tr>";
                    echo "<td><input type='text' value='".$row["nome"]."' id='nome_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["cognome"]."' id='cognome_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["numero_telefono"]."' id='numero_telefono_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["professione"]."' id='professione_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["email"]."' id='email_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["indirizzo"]."' id='indirizzo_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["paese"]."' id='paese_".$row["id"]."' disabled></td>";
                    echo "<td><input type='text' value='".$row["note"]."' id='note_".$row["id"]."' disabled></td>";
                    echo "<td>";
                    echo "<button class='remove-button' onclick='rimuoviContatto(".$row["id"].")'>Rimuovi</button>";
                    echo "<button class='edit-button' onclick='modificaContatto(".$row["id"].")'>Modifica</button>";
                    echo "<button class='save-button' onclick='salvaModifiche(".$row["id"].")' style='display:none; background-color: #4CAF50;'>Salva</button>";
                    echo "<button class='cancel-button' onclick='annullaModifiche(".$row["id"].")' style='display:none;'>Annulla</button>";
                    echo "</td>";
                    echo "</tr>";
                }
            } else {
                echo "<tr><td colspan='9'>Nessun contatto trovato nel database.</td></tr>";
            }
            $conn->close();
            ?>
        </tbody>
    </table>

<br>

<!-- Pulsante per il reindirizzamento -->
<div style="text-align: center; margin-top: 20px;">
    <button style="background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;" onclick="window.location.href = '[URL='https://thefutureita.altervista.org/agenda.php%27;']https://thefutureita.altervista.org/agenda.php';[/URL]">Vai indietro</button>
</div>



    <script>
        // Funzione per abilitare la modifica dei campi
        function modificaContatto(id) {
            var inputs = document.querySelectorAll('input[type="text"]');
            inputs.forEach(function(input) {
                input.disabled = false;
            });

            var editBtns = document.querySelectorAll('.edit-button');
            editBtns.forEach(function(btn) {
                btn.style.display = 'none';
            });

            var saveBtns = document.querySelectorAll('.save-button');
            saveBtns.forEach(function(btn) {
                btn.style.display = 'inline-block';
            });

            var cancelBtns = document.querySelectorAll('.cancel-button');
            cancelBtns.forEach(function(btn) {
                btn.style.display = 'inline-block';
            });
        }

        // Funzione per salvare le modifiche a un contatto
        function salvaModifiche(id) {
            var nome = document.getElementById('nome_' + id);
            var cognome = document.getElementById('cognome_' + id);
            var numero_telefono = document.getElementById('numero_telefono_' + id);
            var professione = document.getElementById('professione_' + id);
            var email = document.getElementById('email_' + id);
            var indirizzo = document.getElementById('indirizzo_' + id);
            var paese = document.getElementById('paese_' + id);
            var note = document.getElementById('note_' + id);

            // Disabilita gli input
            nome.disabled = true;
            cognome.disabled = true;
            numero_telefono.disabled = true;
            professione.disabled = true;
            email.disabled = true;
            indirizzo.disabled = true;
            paese.disabled = true;
            note.disabled = true;

            // Chiamata AJAX per aggiornare i dati nel database
            var xhr = new XMLHttpRequest();
            xhr.open("POST", window.location.href, true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.onreadystatechange = function() {
                if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
                    alert("Modifiche salvate con successo");
                    window.location.reload();
                }
            };
            xhr.send("id=" + id + "&nome=" + nome.value + "&cognome=" + cognome.value + "&numero_telefono=" + numero_telefono.value + "&professione=" + professione.value + "&email=" + email.value + "&indirizzo=" + indirizzo.value + "&paese=" + paese.value + "&note=" + note.value);
        }

        // Funzione per annullare le modifiche a un contatto
        function annullaModifiche(id) {
            window.location.reload();
        }

        // Funzione per rimuovere un contatto
        function rimuoviContatto(id) {
            // Richiesta AJAX per rimuovere il contatto
            var xhr = new XMLHttpRequest();
            xhr.open("GET", window.location.href + "?remove_id=" + id, true);
            xhr.onreadystatechange = function() {
                if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
                    alert("Contatto rimosso con successo");
                    window.location.reload();
                }
            };
            xhr.send();
        }
    </script>
</body>
</html>

Ciao, pubblica il codice.

In genere si usa un database per queste cose...
e come faccio sul database? cioè quali sono i passaggi?
 
Ultima modifica da un moderatore:
Da PC guardo meglio.
Comunque, dovresti filtrare qui, in base all'utente collegato

$sql = "SELECT * FROM agenda";

Prendi l'id dell'utente connesso e filtra per i record di quell' utente.

Dovresti mostrarci anche la struttura delle tabelle che stai usando però.
 
non sono un grande esperto scusatemi
 

Allegati

  • Screenshot 2024-02-21 203653.webp
    Screenshot 2024-02-21 203653.webp
    14.5 KB · Visualizzazioni: 6
  • Screenshot 2024-02-21 203815.webp
    Screenshot 2024-02-21 203815.webp
    36.5 KB · Visualizzazioni: 6
  • Screenshot 2024-02-21 203822.webp
    Screenshot 2024-02-21 203822.webp
    6.4 KB · Visualizzazioni: 6
non sono un grande esperto scusatemi

Bhe ma avrai anche studiato la teoria prima di scrivere del codice... 😅

Quelli sono i nomi delle tabelle. Serve la struttura per vedere come le hai organizzate, dovresti aprire quelle tabelle e mostrare come le hai create.
Puoi anche scrivere un paio di query dalla console di phpmyadmin o da riga di comando, cose come:

Codice:
DESCRIBE agenda;

C'è comunque anche scritto su phpmyadmin "Struttura", su ogni riga del secondo screen.

Posso anticipare che la cosa giusta sarebbe una di queste due strade:

- avere nella tabella agenda l'id dell'users
- avere una tabella cross per utente e agenda (ma in questo caso penso sia inutile); in pratica una N a N

Comunque non so se sei all'Uni o a scuola, ma quel codice oggi come oggi non si scriverebbe più in quel modo.

Per altro sarebbe meglio usare un prepared statement per le query. https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
 
@Gigi_xx_1 riesco a farti un esempio. La tabella agenda potrebbe essere così:

SQL:
CREATE TABLE `tbl_agenda` (
    `id` INT(20) AUTO_INCREMENT,
    `id_user` INT(20),
    `nome` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
    `cognome` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `telefono` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `professione` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `email` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `indirizzo` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `paese` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `note` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    PRIMARY KEY (`id`)
);

dove "user_id" è appunto l'utente che inserisce le info. L'alternativa è fare una tabella dove le associ. Quindi avrai:

SQL:
CREATE TABLE `tbl_agenda` (
    `id` INT(20) AUTO_INCREMENT,
    `nome` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
    `cognome` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `telefono` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `professione` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `email` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `indirizzo` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `paese` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
    `note` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    PRIMARY KEY (`id`)
);

CREATE TABLE `tbl_agenda_user` (
        `id_agenda` INT(20),
        `id_user` INT(20),
);

Dove associ utenti e agende. Probabilmente come nel primo caso ti torna più utile visto ciò che devi rappresentare.

A questo punto la query di ricerca diventa:

SQL:
$sql = "SELECT * FROM agenda WHERE id_user" = ".$id;

Ovviamente... devi mantenere le sessioni, dovresti fornire un login all'utente e farli loggare, altrimenti qualsiasi dato sarà visibile a tutti e non potrai filtrare.
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top