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

Gigi_xx_1

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

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ciao, pubblica il codice.

In genere si usa un database per queste cose...
 

Gigi_xx_1

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

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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ò.
 

Gigi_xx_1

Nuovo Utente
20
0
non sono un grande esperto scusatemi
 

Allegati

  • Screenshot 2024-02-21 203653.png
    Screenshot 2024-02-21 203653.png
    30.9 KB · Visualizzazioni: 6
  • Screenshot 2024-02-21 203815.png
    Screenshot 2024-02-21 203815.png
    105.2 KB · Visualizzazioni: 6
  • Screenshot 2024-02-21 203822.png
    Screenshot 2024-02-21 203822.png
    38.3 KB · Visualizzazioni: 6

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
@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.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili