Risolto: php mi da 404, aggiunto tipo di errore

di il
4 risposte

Risolto: php mi da 404, aggiunto tipo di errore

Salve,

ho fatto una prova di scrittura con php tramite xampp

una semplice scritture anagrafica

ho messo i files in htdocs

l'applicazione parte con localhost, digito i dati

e quando salvo da questo errore

The requested URL was not found on this server.

Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 Server at localhost Port 500

posto il files

file index.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gestione Anagrafica</title>
</head>
<body>
    <h1>Inserisci Dati Anagrafici</h1>
    <form action="C:\xampp\htdocs\ProvaWeb\Salva.php" method="POST">
        <label for="nome">Nome:</label>
        <input type="text" id="nome" name="nome" required><br><br>

        <label for="cognome">Cognome:</label>
        <input type="text" id="cognome" name="cognome" required><br><br>

        <label for="indirizzo">Indirizzo:</label>
        <input type="text" id="indirizzo" name="indirizzo" required><br><br>

        <label for="citta">Città:</label>
        <input type="text" id="citta" name="citta" required><br><br>

        <label for="cap">CAP:</label>
        <input type="text" id="cap" name="cap" required><br><br>

        <label for="nazione">Nazione:</label>
        <input type="text" id="nazione" name="nazione" required><br><br>

        <input type="submit" value="Salva Dati">
    </form>


</body>
</html>

file salva.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>

<body>

//scrittura dati

<?php
// Connessione al database Access
$dsn = 'Driver={Microsoft Access Driver (*.accdb)};Dbq=C:\xampp\htdocs\ProvaWeb\ProvaWeb.accdb';
$conn = odbc_connect($dsn, '', '');

// Verifica se la connessione è avvenuta correttamente
if (!$conn) {
    die('Errore di connessione: ' . odbc_errormsg());
}

// Recupera i dati dal form
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$indirizzo = $_POST['indirizzo'];
$citta = $_POST['citta'];
$cap = $_POST['cap'];
$nazione = $_POST['nazione'];

// Query di inserimento dei dati nel database
$query = "INSERT INTO anagrafica (nome, cognome, indirizzo, citta, cap, nazione) 
          VALUES ('$nome', '$cognome', '$indirizzo', '$citta', '$cap', '$nazione')";

// Esegui la query
if (odbc_exec($conn, $query)) {
    echo "Dati inseriti con successo!";
} else {
    echo "Errore nell'inserimento dei dati: " . odbc_errormsg();
}

// Chiudi la connessione
odbc_close($conn);
?>

</body>
</html>

4 Risposte

  • Re: Risolto: php mi da 404, aggiunto tipo di errore

       <form action="C:\xampp\htdocs\ProvaWeb\Salva.php" method="POST">

    Questo non funziona di sicuro.

    Questa NON E' una URL, ma il path di un file che il client NON PUO' MINIMAMENTE conoscere.

    Dovrebbe essere "Salva.php" in teoria.

  • Re: Risolto: php mi da 404, aggiunto tipo di errore

    Modificato Salva.php

    ora mi da questo errore

    //scrittura dati
    Fatal error: Uncaught Error: Call to undefined function odbc_connect() in C:\xampp\htdocs\ProvaWeb\Salva.php:21 Stack trace: #0 {main} thrown in C:\xampp\htdocs\ProvaWeb\Salva.php on line 21

    posto il codice

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    
    //scrittura dati
    
    <?php
    // Connessione al database Access
    //$dsn = 'provaweb';
    
    $dsn = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\xampp\htdocs\ProvaWeb\ProvaWeb.accdb';
    $username = ''; // 
    $password = ''; // 
    // Crea una connessione ODBC
    $conn = odbc_connect($dsn, $username, $password);
    
    if (!$conn) {
        die("Connessione al database fallita: " . odbc_errormsg());
    }
    
    // Se la connessione è riuscita, visualizza un messaggio di successo
    echo "Connessione al database riuscita!";	
    
    // Recupera i dati dal form
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $indirizzo = $_POST['indirizzo'];
    $citta = $_POST['citta'];
    $cap = $_POST['cap'];
    $nazione = $_POST['nazione'];
    
    // Query di inserimento dei dati nel database
    $query = "INSERT INTO anagrafica (nome, cognome, indirizzo, citta, cap, nazione) 
              VALUES ('$nome', '$cognome', '$indirizzo', '$citta', '$cap', '$nazione')";
    
    // Esegui la query
    if (odbc_exec($conn, $query)) {
        echo "Dati inseriti con successo!";
    } else {
        echo "Errore nell'inserimento dei dati: " . odbc_errormsg();
    }
    
    // Chiudi la connessione
    odbc_close($conn);
    ?>
    
    </body>
    </html>
  • Re: Risolto: php mi da 404, aggiunto tipo di errore

    01/12/2025 - Zeusmax ha scritto:

    Fatal error: Uncaught Error: Call to undefined function odbc_connect() in C:\xampp\htdocs\ProvaWeb\Salva.php:21 Stack trace: #0 {main} thrown in C:\xampp\htdocs\ProvaWeb\Salva.php on line 21

    Hai installato e abilitato l'estensione ODBC per PHP?

    Secondo me, devi fare un passo indietro e studiare un attimo quello che serve per far funzionare PHP in generale e le sue estensioni principali.

    Scrivere codice e riportare sul forum ogni singolo errore fermandosi al primo ostacolo non è il massimo. :|

  • Re: Risolto: php mi da 404, aggiunto tipo di errore

    Ciao, ottimo che hai risolto, se posso darti un consiglio però evita di passare le variabili direttamente nella stringa della query, esponi l'applicativo ad una falla di sicurezza chiamata SQL Injection, sostanzialmente un malintenzionato può sfruttare l'accesso alla stringa della query per interagire con il database e fare danni. 

    Per prevenire tale problematica la best practice, è utilizzare il passaggio dei dati tramite parametri, in questo modo non verranno mai eseguite le query malevoli inserite da un malintenzionato nei parametri input del tuo form, poiché il passaggio tramite parametri forza il database ad interpretare i parametri ricevuti come semplice testo.

    Puoi implementare il passaggio per parametri così:

    // 1. Definisci la query con i segnaposto (?)
    $sql = "INSERT INTO anagrafica (nome, cognome, indirizzo, citta, cap, nazione) 
            VALUES (?, ?, ?, ?, ?, ?)";
            
    // 2. Prepara la query
    $stmt = odbc_prepare($conn, $sql);
            
    // 3. Esegui passando i dati in un array
    $parametri = array($nome, $cognome, $indirizzo, $citta, $cap, $nazione);
    
    if (odbc_execute($stmt, $parametri)) {
    echo "Dati inseriti in totale sicurezza!";
    } else {
    echo "Errore: " . odbc_errormsg();
    }
                    
Devi accedere o registrarti per scrivere nel forum
4 risposte