Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Registrazione utenti

  1. #1

    Registrazione utenti

    Premessa : ho iniziato da poco a studiarmi il php+mysql in preparazione ad un progetto che dovro' consegnare a fine luglio, quindi siate magnanimi.

    Per iniziare a " progettare qualcosa ", ho pensato appunto alla pagina di registrazione utenti: per ora e' solo un'abbozzo, in futuro vorrei modificare il tutto tenendo conto delle sessioni, rindirizzare l'utente alla home page dopo aver confermato l'iscrizione ed aver riassunto nella videata i dati inseriti, ed anche criptare la password in md5 ( per poi decriptarla nel login ) ... ma in futuro ! Inizio dalle basi che e' meglio !!

    Il form per la registrazione e' questo :

    codice:
    <html>
    <head>
    <title>Registrazione nuovo utente</title>
    </head>
    <body> 
    
    
    Per favore inserisci i dati per la registrazione. I campi contrassegnati con l'asterisco sono obbligatori</p>
    <form name="registrazioneutenti" action="create_user.php" method="post"> 
    <table>
    <tr>
    <td colspan="2">Dati anagrafici</td>
    </tr>
    <td>Nome *</td>
    <td><input type="text" name="nome"/></td>
    </tr>
    <tr>
    <td>Cognome *</td>
    <td><input type="text" name="cognome"/></td>
    </tr>
    <tr>
    <td>Data di nascita *</td>
    <td><input type="text" name="data_nascita"/></td>
    </tr>
    <tr>
    <td>Comune di nascita *</td>
    <td><input type="text" name="comune_nascita"/></td>
    </tr>
    <tr>
    <td>Comune di residenza *</td>
    <td><input type="text" name="comune_residenza"/></td>
    </tr>
    <tr>
    <td>Indirizzo *</td>
    <td><input type="text" name="indirizzo"/></td>
    </tr>
    <tr>
    <td>Numero civico</td>
    <td><input type="text" name="numero_civico"/></td>
    </tr>
    <tr>
    <td>Telefono *</td>
    <td><input type="text" name="telefono"/></td>
    </tr>
    <tr>
    <td>Indirizzo e-mail</td>
    <td><input type="text" name="mail"/></td>
    </tr>
    <tr>
    <td colspan="2">Scegli username e password</td>
    </tr>
    <tr>
    <td>Username *</td>
    <td><input type="text" name="username"/></td>
    </tr>
    <tr>
    <td>Password *</td>
    <td><input type="text" name="pass"/></td>
    </tr>
    <tr>
    <td><input type="submit" value="Completa registrazione" />
    </tr>
    </table>
    </form>
    </body>
    </html>
    L'action rimanda alla pagina create_user.php che e' la seguente ( trovata su questo forum e adattata alla mia bdd):

    Codice PHP:
    <?php

    // Parametri per la connessione al database

    $db_host "localhost";
    $db_user "root";
    $db_pass "";
    $db_name "progetto";

    // Ci colleghiamo al database

    $db_conn mysql_connect($db_host$db_pass$dbuser) or die ("Errore connessione:" mysql_error());
    mysql_select_db($db_name$db_conn);


    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $data_nascita $_POST['data_nascita'];
    $comune $_POST['comune_nascita'];
    $comune_res $_POST['comune_residenza'];
    $indirizzo $_POST['indirizzo'];
    $civico $_POST['numero_civico'];
    $telefono $_POST['telefono'];
    $mail $_POST['mail'];
    $user $_POST['username'];
    $pass $_POST['pass'];

    // Inseriamo la query

    $query "INSERT INTO $utenti (nome, cognome, data_nascita, comune_nascita, comune_residenza, indirizzo, numero_civico, telefono, mail, user, pass) VALUES ('$nome', '$cognome', '$data_nascita', '$comune', '$comune_res', '$indirizzo', '$civico', '$telefono', '$mail', '$user', '$pass')";

    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    $num_rows mysql_num_rows($result);

    mysql_close();

    ?>
    Ovviamente non funziona ( figuriamoci, al primo tentativo ) :

    Errore connessione: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 '(nome, cognome, data_nascita, comune_nascita, comune_residenza, indirizzo, numer' at line 1

    Penso di aver adattato abbastanza fedelmente i miei dati :
    localhost perche' sto facendo esperimenti in locale
    user root, non saprei cos'altro metterci, visto che e' appunto un form per la registrazione di nuovi utenti
    pass lo lascio vuoto, ma non so bene se e' necessario inserire qualcosa
    dbname e' appunto progetto ...


    La tabella utenti l'ho creata sul mio db, ho inserito anche un attributo user_id ( che si auto-incrementa, quindi in teoria non lo dovrei ne mettere nella form ne tantomento inserire come variabile in questo file giusto ? ) ..



    Vorrei evitare di fare un brutale copia ed incolla di script gia fatti, altrimenti non imparo nulla ...

    Grazie a tutti per le dritte... per gli altri problemi che ho accennato all'inizio, se avete idee sono ben accette, ma non sono una priorita' al momento!!

  2. #2
    Hai detto che hai creato la tabella utenti, però nella query invochi la tabella $utenti, credo che l'errore sia questo.

    Un appunto. md5 non può essere decriptato (é una sua caratteristica).
    Quando inserisci la password nel db, prima la passi da md5, così nel db è criptata.
    Quando poi un utente farà il login, non é che la decripti (perché come ti ho detto non si può), semplicemente passi per md5 la password che ha inserito al momento del login e la confronti con quella nel db che é già criptata.

  3. #3
    Il guaio di essere "niubbi" e' che non ci si accorge di semplici errori
    Ho risistemato : avevo sbagliato quello che mi avevi detto te ( confuso il nome della tabella con una variabile ) ed ho anche modificato $db_conn, visto che c'era qualche dimenticanza pure li )

    Codice PHP:
    <?php

    // Parametri per la connessione al database

    $db_host "localhost";
    $db_user "root";
    $db_pass "";
    $db_name "progetto";

    // Ci colleghiamo al database

    $db_conn mysql_connect($db_host$db_user$db_pass$db_name) or die ("Errore connessione:" mysql_error());
    mysql_select_db($db_name$db_conn);


    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $data_nascita $_POST['data_nascita'];
    $comune $_POST['comune_nascita'];
    $comune_res $_POST['comune_residenza'];
    $indirizzo $_POST['indirizzo'];
    $civico $_POST['numero_civico'];
    $telefono $_POST['telefono'];
    $mail $_POST['mail'];
    $user $_POST['username'];
    $pass $_POST['pass'];

    // Inseriamo la query

    $query "INSERT INTO utenti (nome, cognome, data_nascita, comune_nascita, comune_residenza, indirizzo, numero_civico, telefono, mail, user, pass) VALUES ('$nome', '$cognome', '$data_nascita', '$comune', '$comune_res', '$indirizzo', '$civico', '$telefono', '$mail', '$user', '$pass')";

    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    // $num_rows = mysql_num_rows($result);

    mysql_close();

    ?>
    Ora provo a riguardarmi il discorso sul md5 che mi hai detto te, provo a far visualizzare ( sempre grazie a create_user.php ) i dati immessi ed a fare un indirizzamento ad index.php. Infine ad aggiungere dei vincoli ( il campo user ad esempio l'ho impostato come unique nella bdd ) ... non so se fare qualcosa con js ( linguaggio che conosco un pochino meglio ) o fare tutto con php .. vedro' ..

    Grazie per l'aiuto per ora ..

  4. #4
    Ho provato a fare qualche modifica, con il risultato che adesso non mi inserisce piu nessun utente.

    Codice PHP:
    <?php

    // Parametri per la connessione al database

    $db_host "localhost";
    $db_user "root";
    $db_pass "";
    $db_name "progetto";

    // Collegamento al database

    $db_conn mysql_connect($db_host$db_user$db_pass$db_name) or die ("Errore connessione:" mysql_error());
    mysql_select_db($db_name$db_conn);

    // Variabili

    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $data_nascita $_POST['data_nascita'];
    $comune $_POST['comune_nascita'];
    $comune_res $_POST['comune_residenza'];
    $indirizzo $_POST['indirizzo'];
    $civico $_POST['numero_civico'];
    $telefono $_POST['telefono'];
    $mail $_POST['mail'];
    $user $_POST['username'];

    // Password criptata

    $pass md5($_POST['pass']);

    // Variabile per verificare se l'username inserito esiste gia

    $verificausername "SELECT * utenti WHERE user= '$user'";


    // Controlli di routine per verificare i dati inseriti
    // Se i dati sono mancanti o username e' gia inserito, indirizzo l'utente nella pagina di registrazione, altrimenti procedo e stampo i risultati

    if ($user=='' || $pass=='' || $nome=='' || $cognome=='' || $data_nascita=='' || $mail=='' || $verificauserername !== 0)
    {
    header ("location: registrazione_utenti.php");
    echo 
    "Hai dimenticato di compilare tutti i campi obbligatori oppure l'username scelto risulta gia registrato";
    exit;
    }

    // Query inserimento utenti

    $query "INSERT INTO utenti (nome, cognome, data_nascita, comune_nascita, comune_residenza, indirizzo, numero_civico, telefono, mail, user, pass) VALUES ('$nome', '$cognome', '$data_nascita', '$comune', '$comune_res', '$indirizzo', '$civico', '$telefono', '$mail', '$user', '$pass')";

    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    // $num_rows = mysql_num_rows($result); 
    mysql_close();


    ?>

    <html>
    <head>
    <title>Registrazione riuscita</title>
    </head>
    <body>


    Complimenti, la registrazione &egrave; andata a buon fine: adesso puoi effettuare il login ed inserire nuovi 
    alloggi.</p>
    <ul>[*]Username : <?php  echo "$user"?>[*]Password : <?php  echo "$pass"?>[/list]
    </body>
    </html>
    Per un " breve periodo " ha funzionato, poi devo aver modificato qualcosa ( cercavo di risolvere il problema del location, praticamente non mi appariva l'echo prima del location ) ed ho compinato un danno ...

    p.s : ho messo come commento $num_rows = mysql_num_rows($result) ... non capisco a cosa serva in questo script !!

  5. #5
    Ok sono riuscito a sistemare il tutto, eliminando qualche " prelibatezza " che in fin dei conti non mi era necessaria. Peccato solo che sia il server a dirmi che l'user e' " unico " .. avrei preferito rimandare alla pagina di registrazione anche in quel caso, ma non riuscivo a settare bene la variabile verificausername.

    Posto il codice nel caso qualcuno sia interessato allo script, anche se mi rendo conto e' banale e sicuramente migliorabile da chi ne capisce di piu ^_^

    Codice PHP:
    <?php

    // Parametri per la connessione al database

    $db_host "localhost";
    $db_user "root";
    $db_pass "";
    $db_name "progetto";

    // Collegamento al database

    $db_conn mysql_connect($db_host$db_user$db_pass$db_name) or die ("Errore connessione:" mysql_error());
    mysql_select_db($db_name$db_conn);

    // Variabili

    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $data_nascita $_POST['data_nascita'];
    $comune $_POST['comune_nascita'];
    $comune_res $_POST['comune_residenza'];
    $indirizzo $_POST['indirizzo'];
    $civico $_POST['numero_civico'];
    $telefono $_POST['telefono'];
    $mail $_POST['mail'];
    $user $_POST['username'];
    $pass2 $_POST['pass'];

    // Password criptata da inviare al db

    $pass md5($_POST['pass']);


    // Controlli di routine per verificare i dati inseriti
    // Se i dati sono mancanti, indirizzo l'utente nella pagina di registrazione, altrimenti procedo e stampo i risultati

    if ($user=='' || $pass=='' || $nome=='' || $cognome=='' || $data_nascita=='' || $mail=='')
    {
    header ("location: registrazione_utenti.php");
    echo 
    "Hai dimenticato di compilare tutti i campi obbligatori oppure l'username scelto risulta gia registrato";
    exit;
    }

    // Query inserimento utenti

    $query "INSERT INTO utenti (nome, cognome, data_nascita, comune_nascita, comune_residenza, indirizzo, numero_civico, telefono, mail, user, pass) VALUES ('$nome', '$cognome', '$data_nascita', '$comune', '$comune_res', '$indirizzo', '$civico', '$telefono', '$mail', '$user', '$pass')";
    $result mysql_query($query$db_conn) or die ("Errore connessione:" mysql_error());
    mysql_close();


    ?>

    <html>
    <head>
    <title>Registrazione riuscita</title>
    </head>
    <body>


    Complimenti, la registrazione &egrave; andata a buon fine: adesso puoi effettuare il login ed inserire nuovi 
    alloggi.</p>
    <ul>[*]Username : <?php  echo "$user"?>[*]Password : <?php  echo "$pass2"?>[/list]
    </body>
    </html>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.