Visualizzazione risultati 1 fino 18 di 18
Like Tree1Likes
  • 1 Post By unisatripboard

Discussione: Registrazione nel Database non funzionante

  1. #1
    Guest

    Predefinito Registrazione nel Database non funzionante

    Allora, quando vado alla pagina Registrazione.php non mi salva i dati della registrazione nel database.
    Il codice della pagina /Registrazione/index.php è questo
    Codice PHP:
    <?php
    $host
    ="localhost"; // Hostname
    $username="theclashclan"; // Mysql username
    $password=""; // Mysql password
    $db_name="my_theclashclan"; //Nome del Database
    $tbl_name="Utenti_Clan"; // Nome della Tabella
    $db = mysql_connect($localhost,$username,$password);
    mysql_select_db($db_name,$db);

    $id = $_GET['id'];
    $username = $_GET['username'];
    $password = $_GET['password'];
    $email = $_GET['email'];
    $nome_clan = $_GET['nome_clan'];
    $livello_clan = $_GET['livello_clan'];
    $membri_clan = $_GET['membri_clan'];

    mysql_query("INSERT INTO ".$tbl_name." (email,username,password,nome_clan,livello_clan,membri_clan) VALUES ('$email','$username','$password','$nome_clan','$livello_clan','$membri_clan')",$db)
    ?>
    Metto anche quello del form html della pagina /Registrati/index.html
    Codice HTML:
    <form method="GET" action="/Registrazione" ><br>
    La tua Email
    <input type="text" name="email" ><br>
    Il tuo username (lo userai per accedere al tuo account)
    <input type="text" name="username" ><br>
    La tua password (la userai per accedere al tuo account)
    <input type="text" name="password" ><br>
    Il nome del tuo clan
    <input type="text" name="nome_clan" ><br>
    Il livello del tuo clan
    <input type="text" name="livello_clan" ><br>
    Il numero dei membri del tuo clan
    <input type="text" name="membri_clan" ><br>
    <input type="submit" name="OK" value="OK">
    </form>
    Grazie a tutti in anticipo

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Innanzitutto la seguente riga va tolta:
    Codice PHP:
    $id = $_GET['id'];
    Inoltre, controlla il valore di ritorno della query, in questo modo avrai informazioni su un eventuale errore:
    Codice PHP:
    $result = mysql_query("INSERT INTO ".$tbl_name." (email,username,password,nome_clan,livello_clan,membri_clan) VALUES ('$email','$username','$password','$nome_clan','$livello_clan','$membri_clan')",$db) ;
    if (!
    $result) {
    echo
    "ERROR: " . mysql_error();
    }
    Se non vengono mostrati errori, aggiungi anche error_reporting tra le prime righe del codice:
    Codice PHP:
    error_reporting(E_ALL);

  3. #3
    unisatripboard non è connesso Neofita
    Data registrazione
    09-12-2015
    Messaggi
    17

    Predefinito

    mzanella già ti ha risposto, ma io aggiungerei che le funzioni mysql sono stato eliminate nella versione PHP 7 e quindi è consigliabile usare le funzioni mysqli oppure PDO.
    mzanella likes this.

  4. #4
    Guest

    Predefinito

    Ho messo il codice di mzanella nella pagina e mi dice: ERROR: Field 'id' doesn't have a default value .
    Che vuol dire??? Io l'ho eliminata la riga del' id ed è un auto increment quindi???

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Sicuro che il campo id abbia l'attributo AUTO_INCREMENT nella base di dati?
    Dall'errore che ti viene mostrato sembra non sia stato impostato...

  6. #6
    Guest

    Predefinito

    Vero l' id non era un auto increment, scusate.

  7. #7
    Guest

    Predefinito

    Allora, ho cambiato un po' di cose, ora il codice della pagina Registrazione è il seguente
    Codice PHP:
    $host="localhost"; // Hostname
    $username="theclashclan"; // Mysql username
    $password=""; // Mysql password
    $db_name="my_theclashclan"; //Nome del Database
    $db = mysql_connect($localhost,$username,$password);
    mysql_select_db($db_name,$db);

    $username = $_POST['username'];
    $password = $_POST['password'];
    $email = $_POST['email'];
    $nome_clan = $_POST['nome_clan'];
    $livello_clan = $_POST['livello_clan'];
    $membri_clan = $_POST['membri_clan'];
    $access_clan = $_POST['access_clan'];
    $tipo_clan = $_POST['tipo_clan'];

    $result = mysql_query("INSERT INTO ".$tipo_clan." (username,password,email,nome_clan,livello_clan,membri_clan,access_clan) VALUES ('$username','$password','$email','$nome_clan','$livello_clan','$membri_clan','$access_clan')",$db) ;
    if (!
    $result) {
    echo
    "ERROR: " . mysql_error();
    }
    E mi dice: ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(username,password,email,nome_clan,livello_clan,m embri_clan,access_clan) VALUES ' at line 1 .
    Se qualcuno fosse così gentile da riguardare questa vecchia discussione, lo ringrazio.

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Una possibile causa è che $_POST['tipo_clan'], e quindi anche $tipo_clan, non siano definiti, o siano nulli.
    Hai modificato il form HTML, sostituendo method="GET" con method="POST" ed aggiungendo un campo con attributo name="tipo_clan"?

    Se hai dubbi, aggiungi un var_dump per mostrare i valori contenuti in $_POST (puoi inserirlo in qualunque punto del codice, ad esempio dopo la connessione):
    Codice PHP:
    echo "<pre>";
    var_dump($_POST);
    echo
    "</pre>";
    Inoltre, al momento il codice è vulnerabile a SQL Injection, l'input va "ripulito" con mysql_real_escape_string:
    Codice PHP:
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $email = mysql_real_escape_string($_POST['email']);
    $nome_clan = mysql_real_escape_string($_POST['nome_clan']);
    $livello_clan = mysql_real_escape_string($_POST['livello_clan']);
    $membri_clan = mysql_real_escape_string($_POST['membri_clan']);
    $access_clan = mysql_real_escape_string($_POST['access_clan']);
    $tipo_clan = mysql_real_escape_string($_POST['tipo_clan']);

  9. #9
    Guest

    Predefinito

    Sì, nel form tipo_clan è un campo option ma mi da ancora lo stesso errore (
    ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(username,password,email,nome_clan,livello_clan,m embri_clan,access_clan) VALUES ' at line 1
    ) e poi non mostra il contenuto delle variabili con il tuo codice, ma mi dice: array(0) {
    }
    Grazie ancora

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se non mostra i parametri passati vuol dire che la pagina non li ha ricevuti. Hai controllato che il metodo del form sia POST?

  11. #11
    Guest

    Predefinito

    Sì, il metodo è post, e poi se metto get le vedo le variabili.

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Alquanto bizzarro !
    Puoi fornire un link alla pagina HTML in questione (quella che prova ad utilizzare POST)?

  13. #13
    Guest

    Predefinito

    il link è questo

  14. #14
    Guest

    Predefinito

    Si giusto

  15. #15
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ok, visto. Nel form HTML, il valore di action è sbagliato: stai usando
    Codice HTML:
    <form method="POST" action="/Registrazione">
    quando dovresti invece usare
    Codice HTML:
    <form method="POST" action="/Registrazione/">
    (con la barra dopo "Registrazione").

    Facendo delle prove ho notato che, nella base di dati, hai definito le colonne per il nome utente, l'email e la password come interi. Non so se questo sia voluto, ho pensato che fosse il caso di fartelo notare .

  16. #16
    Guest

    Predefinito

    In che senso le colonne???
    Comunque ora le variabili me le mostra, ma mi da l'errore: Incorrect integer value: '[quello che scrivo nel campo username]' for column 'username' at row 1 . Non so perchè lo dice, il valore è corretto!!!

  17. #17
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    In che senso le colonne???
    ma mi da l'errore: Incorrect integer value: '[quello che scrivo nel campo username]' for column 'username' at row 1.
    Ecco, è esattamente quello il senso.
    Nella base di dati hai dichiarato che le colonne (altrimenti detti campi) username, email, password sono definite come INT (o analogo). Dovresti modificarne la definizione in CHAR, VARCHAR o simili.

  18. #18
    Guest

    Predefinito

    AAAAAAAAAAA, INT è numerico, vero.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •