Carica sempre errore.php

di il
2 risposte

Carica sempre errore.php

Buongiorno a tutti, 

sono nuovo di php ed ho realizzato questa pagina con l'aiuto dell'IA 

cliccando il pulsante “salva” dovrebbe generare username e password random e salvare il record nella tabella operatori.

il problema è che cliccando “salva” il record non viene salvato e carica sempre la pagina errore.php 

qualcuno di voi esperto in php riesce a capire dove potrebbe essere il problema?

Grazie. 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nuovo Operatore</title>
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/operatore.css">
</head>
<body>
<?php
    session_start();
    include('connessione.php');


    if (!isset($_SESSION['idazienda'])) {
        header("Location: index.php");
        exit();
    }

    if (!isset($_GET['idazienda']) || !isset($_SESSION['idazienda']) || $_SESSION['idazienda'] != $_GET['idazienda']) {
        header("Location: errore.php");
        exit();
    }

    $errore = ""; // Variabile per memorizzare eventuali messaggi di errore

    // Funzione per verificare e garantire l'unicità di username, password e codice fiscale per l'idazienda corrente
    function verificaUnivocitaDati($username, $password, $codiceFiscale, $idazienda, $conn) {
	  // Query per verificare se esiste già una combinazione di username, password e codice fiscale per l'idazienda corrente
	  $queryVerifica = "SELECT * FROM operatori WHERE idazienda = '$idazienda' AND (username = '$username' OR password = '$password' OR codice_fiscale = '$codiceFiscale')";
	  $result = $conn->query($queryVerifica);

	  // Se la combinazione esiste, restituisci un array con i dati dell'operatore esistente
	  if ($result->num_rows > 0) {
		return $result->fetch_assoc();
	  }

	  // Se la combinazione non esiste, restituisci un array vuoto
	  return array();
	}

    // Verifica se è stato inviato il modulo
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $cognome = $_POST["cognome"];
        $nome = $_POST["nome"];
        $email = $_POST["email"];
        $codiceFiscale = $_POST["codice_fiscale"];
        $idazienda = $_POST["idazienda"];

        $username = generaNuovoUsername();
        $password = generaNuovaPassword();

        $univoci = verificaUnivocitaDati($username, $password, $codiceFiscale, $idazienda, $conn);

        if (is_string($univoci)) {
            $errore = $univoci;
        } else {
            $queryInserimento = "INSERT INTO operatori (idazienda, cognome, nome, email, codice_fiscale, username, password, attivo) VALUES ('$idazienda', '$cognome', '$nome', '{$univoci['codice_fiscale']}', '$email', '{$univoci['username']}', '{$univoci['password']}', 1)";

			if ($conn->query($queryInserimento) === TRUE) {
				header("Location: operatori.php?idazienda=" . $idazienda);
				exit();
			} else {
				$errore = "Errore durante l'inserimento dell'operatore: " . $conn->error;
			}
        }
    }
?>

<nav>
    <div id="riepilogo-container">
        <span id="riepilogo-servizi">Nuovo Operatore</span>
    </div>
    <ul></ul>
</nav>

<div class="container-operatore">
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="cognome">Cognome:</label>
        <input type="text" name="cognome" required>

        <label for="nome">Nome:</label>
        <input type="text" name="nome" required>

        <label for="codice_fiscale">Codice Fiscale:</label>
        <input type="text" name="codice_fiscale" required>

        <label for="email">Email:</label>
        <input type="email" name="email" required>

        <input type="hidden" name="idazienda" value="<?php echo $_GET['idazienda']; ?>">

        <div class="button-container">
            <button type="submit" name="salva">Salva</button>
            <button type="button" onclick="annullaInserimento()">Annulla</button>
        </div>
        <?php if ($errore != ""): ?>
            <div style="color: red;"><?php echo $errore; ?></div>
        <?php endif; ?>
    </form>
</div>

<script>
    function annullaInserimento() {
        window.location.href = "operatori.php?idazienda=<?php echo $_SESSION['idazienda']; ?>";
    }

    function generaNuovoUsername() {
        var cognome = document.getElementById("cognome").value;
        var nome = document.getElementById("nome").value;
        var username = (cognome + nome).replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
        username += Math.floor(Math.random() * 1000);
        return username;
    }

    function generaNuovaPassword() {
        var caratteriPermessi = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        var lunghezzaPassword = 4;
        var password = "";
        for (var i = 0; i < lunghezzaPassword; i++) {
            var indiceCasuale = Math.floor(Math.random() * caratteriPermessi.length);
            password += caratteriPermessi.charAt(indiceCasuale);
        }
        return password;
    }
</script>
</body>
</html>

2 Risposte

  • Re: Carica sempre errore.php

    Ciao @tmtube benvenuto, il codice da te mostrato é solo parte della pagina operatori.php che verifica la presenza altrimenti li aggiunge come nuovo operatore.

    1) La variabile $_SESSION['idazienda'] con quale valore é in altre parti di codice?

    2) JavaScript getElementById indica che il markup HTML abbia id univoco ma il tuo codice ne é privo.

    3) Le funzioni generaNuovoUsername() e generaNuovaPassword() sono visibili in JavaScript ma non in PHP se non tramite stringa

  • Re: Carica sempre errore.php

    Cercherò di capire gli errori da te segnalati e vediamo se riesco a farla funzionare.

    Grazie per la risposta, 

Devi accedere o registrarti per scrivere nel forum
2 risposte