Visualizzazione risultati 1 fino 17 di 17

Discussione: form di registrazione

  1. #1
    Guest

    Question form di registrazione

    Ciao a tutti ragazzi questa è a mia prima topic hihihi
    Sono appena passata a av

    Mi ha parlato molto bene di questo forum e ora lo voglio provare.

    Allora sto scrivendo la pagina di registrazione al mio sito (non è che ci capisco molto di php)

    Volevo sapere se almeno il concetto era giusto:

    Sopra c'è un form e sotto questo:

    Codice PHP:
    <?php
    if(!empty($_POST['ad_profile']))
    {
    $fullname = trim(htmlspecialchars($_POST['fullname']));
    $username = trim(htmlspecialchars($_POST['username']));
    $email = trim(htmlspecialchars($_POST['email']));
    $email2 = trim(htmlspecialchars($_POST['email2']));
    $password = trim(htmlspecialchars($_POST['password']));
    $password2 = trim(htmlspecialchars($_POST['password2']));

    if ()
    /*campi non vuoti*/
    {
    if ()
    /*password conincidenti*/
    {
    if ()
    /*email coincidenti*/
    {
    if ()
    /*email valida*/
    {
    if ()
    /*username libero*/
    {
    /*carica sul database*/
    }
    else ()
    /*username occupato*/
    {
    /*stampa errore*/
    }
    }
    else ()
    /*email non valida*/
    {
    /*stampa errore*/
    }
    }
    else ()
    /*email non coincidenti*/
    {
    /*stampa errore*/
    }
    }
    else ()
    /*password non conincidenti*/
    {
    /*stampa errore*/
    }
    }
    else()
    /*campi vuoti*/
    {
    /*stampa errore*/
    }
    ?>
    Ha un minimo di logica o niente?

  2. #2
    Guest

    Predefinito

    Così ha logica, ma non serve a niente, dovresti inziiare a buttare giù qualche condizione, poi nel caso migliorarla con l'aiuto degli altri utenti.

    In ogni caso mi sembra siano troppe, basta controllare solo una volta!

    Come scritto buttà giù una bozza dele condizioni poi si vedrà.

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se posso darti un consiglio, puoi snellire notevolmente il codice controllando PRIMA tutto quello che non va e, se superi tutti i controlli, eseguire ciò che ti serve. Qualcosa del genere in pratica:
    Codice:
    if (i campi sono vuoti)
    {
       errore: i campi sono vuoti
    }
    else if (le password non coincidono)
    {
       errore: le password non coincidono
    }
    else if (le email non coincidono)
    {
       errore: le e-mail non coincidono
    }
    else if (l'e-mail non è valida)
    {
       errore: l'e-mail non è valida
    }
    else if (lo username non è disponibile)
    {
       errore: username non disponibile
    }
    else
    {
       è tutto a posto! procedi con l'inserimento
    }
    Naturalmente, devi prendere quanto sopra come una struttura generale: la sintassi di base è valida, ma a completarla devi pensarci tu in base alle tue esigenze...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Se posso darti un consiglio, puoi snellire notevolmente il codice controllando PRIMA tutto quello che non va e, se superi tutti i controlli, eseguire ciò che ti serve. Qualcosa del genere in pratica:
    Codice:
    if (i campi sono vuoti)
    {
       errore: i campi sono vuoti
    }
    else if (le password non coincidono)
    {
       errore: le password non coincidono
    }
    else if (le email non coincidono)
    {
       errore: le e-mail non coincidono
    }
    else if (e-mail non valida)
    {
       errore: l'e-mail non è valida
    }
    else if (lo username non è disponibile)
    {
       errore: username non disponibile
    }
    else
    {
       è tutto a posto! procedi con l'inserimento
    }
    Naturalmente, devi prendere quanto sopra come una struttura generale: la sintassi di base è valida, ma a completarla devi pensarci tu in base alle tue esigenze...

    Stammi bene...
    Ok in effetti la tua sembra molto più snella:

    Codice PHP:

    {
    $fullname = trim(htmlspecialchars($_POST['fullname']));
    $username = trim(htmlspecialchars($_POST['username']));
    $age = trim(htmlspecialchars($_POST['age']));
    $email = trim(htmlspecialchars($_POST['email']));
    $email2 = trim(htmlspecialchars($_POST['email2']));
    $password = trim(htmlspecialchars($_POST['password']));
    $password2 = trim(htmlspecialchars($_POST['password2']));

    if ((!
    $fulname) || (!$username) || (!$age) || (!$email) || (!$email2) || (!$password) || (!$password2))
    {
    echo
    "errore: Occorre compilare tutti i campi.";
    }
    else if (
    $password != $password2)
    {
    echo
    "Errore: Le password non coincidono";
    }
    else if (
    $email != $ameil)
    {
    echo
    "Errore: Le e-mail non coincidono";
    }
    else if (!
    eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email))
    {
    echo
    "Errore: l'e-mail non è valida";
    }
    else if (
    l'username non è disponibile)
    {
    echo "Errore: Username non disponibile";
    }
    else
    {
    $db = mysql_connect($db_host, $db_username, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Se questo errore dovesse ripetersi contattare l'
    assistenza");

    mysql_select_db(
    $databse_name, $db)
    or die ("
    Errore nella selezione del database. Se questo errore dovesse ripetersi contattare l'assistenza");
    $query = "INSERT INTO wtech_users (fullname, username, email, password) VALUES ('".
    $fullname."', '".$username."', '".$email."', '".$password."')";
    if (mysql_query($query, $db))
    echo "Caricamento completato. Grazie";
    else
    echo "Errore durante l'
    inserimento. Se questo errore dovesse ripetersi contattare l'assistenza";
    //endif;
    mysql_close($db);

    }}
    ?>
    Così potrebbe funzionare?

    Non so scrivere l'ultima mi aiutate voi?
    Ultima modifica di test4you : 02-10-2009 alle ore 12.12.13 Motivo: Modifica su form

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    In effetti, l'ultimo controllo forse ti converrebbe eseguirlo all'interno dell'ultimo else, piuttosto che al suo esterno. Procedi così:

    - dopo che hai assunto che tutti i dati, meno l'username, siano corretti (il codice così come l'hai scritto sopra, fino all'ultimo else if)
    - connettiti al database, ed esegui la query per verificare se lo username è disponibile
    - se è già utilizzato (la query ti restituisce almeno un risultato), allora notificalo all'utente
    - in caso contrario, procedi con l'inserimento nel database

    Questo è perché gli ultimi due casi richiedono entrambi una procedura comune (o meglio: uno dipende dalla riuscita dell'altro).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    In effetti, l'ultimo controllo forse ti converrebbe eseguirlo all'interno dell'ultimo else, piuttosto che al suo esterno. Procedi così:

    - dopo che hai assunto che tutti i dati, meno l'username, siano corretti (il codice così come l'hai scritto sopra, fino all'ultimo else if)
    - connettiti al database, ed esegui la query per verificare se lo username è disponibile
    - se è già utilizzato (la query ti restituisce almeno un risultato), allora notificalo all'utente
    - in caso contrario, procedi con l'inserimento nel database

    Questo è perché gli ultimi due casi richiedono entrambi una procedura comune (o meglio: uno dipende dalla riuscita dell'altro).

    Stammi bene...
    E quindi come dovrei scriver la fine?

    Codice PHP:
    else
    {
    $db = mysql_connect($db_host, $db_username, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Se questo errore dovesse ripetersi contattare l'assistenza");

    mysql_select_db($databse_name, $db)
    or die (
    "Errore nella selezione del database. Se questo errore dovesse ripetersi contattare l'assistenza");
    $query = "INSERT INTO wtech_users (fullname, username, email, age, password) VALUES ('".$fullname."', '".$username."', '".$email."', '".$age."', '".$password."')";
    if (
    mysql_query($query, $db))
    echo
    "Caricamento completato. Grazie";
    else
    echo
    "Errore durante l'inserimento. Se questo errore dovesse ripetersi contattare l'assistenza";
    //endif;
    mysql_close($db);

    }

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Non ti manca molto... devi solo eseguire un'altra query al database:
    Codice PHP:
    else
    {
    $db = mysql_connect($db_host, $db_username, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Se questo errore dovesse ripetersi contattare l'assistenza");

    mysql_select_db($databse_name, $db)
    or die (
    "Errore nella selezione del database. Se questo errore dovesse ripetersi contattare l'assistenza");

    /*** add by DS ***/
    $query = "SELECT username FROM wtech_users WHERE username = '$username'";
    $result = mysql_query ($query);
    if (
    mysql_num_rows($result) > 0)
    echo
    "Username $username già utilizzato!";
    else {
    /***************/

    $query = "INSERT INTO wtech_users (fullname, username, email, age, password) VALUES ('".$fullname."', '".$username."', '".$email."', '".$age."', '".$password."')";
    if (
    mysql_query($query, $db))
    echo
    "Caricamento completato. Grazie";
    else
    echo
    "Errore durante l'inserimento. Se questo errore dovesse ripetersi contattare l'assistenza";

    /*** add by DS ***/
    }
    /***************/

    //endif;
    mysql_close($db);

    }
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    Grazie mille ora scrivo la pagina che invia la mail di conferma se ho ancora bisogna posso riaprire questo post o ne apro un altro?

    GRAZIE A TUTTI

  9. #9
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da test4you Visualizza messaggio
    Grazie mille ora scrivo la pagina che invia la mail di conferma se ho ancora bisogna posso riaprire questo post o ne apro un altro?

    GRAZIE A TUTTI
    dato che di solito le implementazione di una form di registrazione vogliono che ci sia anche da inviare un mail di conferma, credo che puoi aggiungere anche qui :)
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  10. #10
    Guest

    Predefinito

    posta tutto lo script....
    con le modifiche fatte....

    e cosa voi che alla persona che si registra voi che venga inviato i dati penso come nome e pass...^^

  11. #11
    Guest

    Predefinito

    Codice PHP:
    <?php
    if(!empty($_POST['ad_profile']))
    {
    $fulname = trim(htmlspecialchars($_POST['fulname']));
    $username = trim(htmlspecialchars($_POST['username']));
    $age = trim(htmlspecialchars($_POST['age']));
    $email = trim(htmlspecialchars($_POST['email']));
    $email2 = trim(htmlspecialchars($_POST['email2']));
    $password = trim(htmlspecialchars($_POST['password']));
    $password2 = trim(htmlspecialchars($_POST['password2']));
    $md5_password = md5($password);

    if ((!
    $fulname) || (!$username) || (!$age) || (!$email) || (!$email2) || (!$password) || (!$password2))
    {
    echo
    "Errore: Occorre compilare tutti i campi.";
    }
    else if (
    $password != $password2)
    {
    echo
    "Errore: Le password non coincidono.";
    }
    else if (
    $email != $email)
    {
    echo
    "Errore: Le e-mail non coincidono.";
    }
    else if (!
    eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email))
    {
    echo
    "Errore: E-mail non è valida.";
    }
    else
    {
    $db = mysql_connect($db_host, $db_username, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Se questo errore dovesse ripetersi contattare l'assistenza");

    mysql_select_db($databse_name, $db)
    or die (
    "Errore nella selezione del database. Se questo errore dovesse ripetersi contattare l'assistenza");

    /*** add by DS ***/
    $query = "SELECT username FROM data_users WHERE username = '$username'";
    $result = mysql_query ($query);
    if (
    mysql_num_rows($result) > 0)
    echo
    "Errore: Username $username già utilizzato.";
    else {
    /***************/

    $query = "INSERT INTO data_users (fullname, username, email, age, password) VALUES ('".$fullname."', '".$username."', '".$email."', '".$age."', '".$$md5_password."')";
    if (
    mysql_query($query, $db))
    echo
    "Caricamento completato. Grazie";
    else
    echo
    "Errore durante l'inserimento. Se questo errore dovesse ripetersi contattare l'assistenza";

    /*** add by DS ***/
    }
    /***************/

    //endif;
    mysql_close($db);

    } }
    ?>
    Questa è tutto lo scirpt vorrei che venisse mandata una E-Mail al destinatario in cui li venissero elencati i dati inseriti e gli venisse dato un collegamento ad una pagina per convalidare l'iscrizione.

    Ho cercato sul web e ho trovato questo codice:

    $destinatario ="$email";
    $oggetto ="Convalida registrazione";
    $intro="Grazie $username, per eserti iscritto.</br></br>";
    $autentica="Per convalidare la tua iscizione per favore recati a questa pagina: </br> /*pagina*/</br></br>";
    $tuoi_dati="I tuoi dati sono:</br>Username: $username</br>Password: $password</br></br>";
    $info="Le ricordiamo che non potrà accedere con il suo ID fino alla convalida del profilo.</br></br>";
    $error="Se avete ricevuto questa E-Mail per errore contattateci: </br> /*pagina*/.</br></br>";
    $header="Questa è una E-Mail auto generata siete pregati di non rispondere.</br></br>";
    mail ($destinatario, $oggetto, $intro, $autentica, $tuoi_dati, $info, $error, $header);
    Può funzionare? dove lo posiziono?
    Ultima modifica di test4you : 03-10-2009 alle ore 15.17.25

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da test4you Visualizza messaggio

    Questa è tutto lo scirpt vorrei che venisse mandata una E-Mail al destinatario in cui li venissero elencati i dati inseriti e gli venisse dato un collegamento ad una pagina per convalidare l'iscrizione.
    sarei anche io interessato alla creazione (presumo del server mysql) di una pagina temporanea di attivazione con generazione del rispettivo link...

    il sistema della mail sopra citato funziona, l'ho addattato alle mie esigenze

  13. #13
    Guest

    Predefinito

    ciao a tutti...

    sto riscrivendo in modo corretto il mio script di registrazione... solo che mi da un errore a riga 22, ovvero dove ho tutti i OR per verificare che i campi siano completi...

    come posso risolvere?

    Codice PHP:


    $nome
    =$_POST['r_nome'];
    $cognome=$_POST['r_cognome'];
    $citta=$_POST['r_citta'];
    $datanascita=$_POST['r_datanascita'];
    $squadratif=$_POST['r_scuadratif'];
    $username=$_POST['r_username'];
    $password=$_POST['r_pass1'];
    $contrll_password=$_POST['r_pass2'];
    $mail=$_POST['r_mail'];
    $accetta=$_POST['accetta_regolamento']
    /* qui sistemo i campi con errori vuoti e password diverse*/

    if (($nome == "") OR (unset($accetta)) OR ($cognome == "") OR ($citta == "") OR ($datanascita == "") OR (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $mail)) OR ($squadratif == "") OR ($contrll_password == "") OR ($password != $contrll_password) OR ($username == "") OR ($mail == "")) {


    echo
    "<b><p>Non hai compilato tutti i campi</b></p>";
    echo
    "<p> </p>";
    if (
    $nome == "") { echo "<p> * non hai completato il campo nome</p>" ; }
    if (
    $mail == "") { echo "<p> * non hai completato il campo mail</p>" ; }
    if (!
    eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $mail)) { echo "<p> * indirizzo mail errato</p>" ; }
    if (
    $username == "") { echo "<p> * non hai completato il campo username</p>" ; }
    if (
    $cognome == "") { echo "<p> * non hai completato il campo cognome</p>" ; }
    if (
    $password == "") { echo "<p> * non hai completato il campo password</p>" ; }
    if (
    $contrll_password == "") { echo "<p> * non hai completato il campo controllo password</p>" ; }
    if (
    $contrll_password != $password) { echo "<p> * hai inserito due password diverse</p>" ; }
    if (
    $citta == "") { echo "<p> * non hai completato il campo citta</p>" ; }
    if (
    $datanascita == "") { echo "<p> * non hai completato il campo data di nascita</p>" ; }
    if (
    $squadratif == "") { echo "<p> * non hai completato il campo squadra tifata</p>" ; }
    if (unset(
    $accetta)) { echo "<p> * non hai accettato il regolamento</p>" ; }


    }
    grazie in anticipo...

    (ps. è possibile impostare che nel campo data, essa debba essere inserita secondo lo schema gg/mm/aaaa ? grazie ancora)

  14. #14
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    È un po' strano quell'unset() della seconda condizione, forse volevi usare isset()?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  15. #15
    Guest

    Predefinito

    xke se non è selezionato deve dare errore...

    a ogni modo da cmq errore su quella riga

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Codice PHP:
    $accetta=$_POST['accetta_regolamento']
    Manca il ;

    Ciao!

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da fendermx Visualizza messaggio
    xke se non è selezionato deve dare errore...

    a ogni modo da cmq errore su quella riga
    Puoi sempre usare il punto esclamativo (negazione), quando ti serve che una condizione NON sia verificata:
    Codice PHP:
    if ($nome == '' || !isset($accetta) || ...)
    {
    ...
    if (!isset(
    $accetta)) echo "Non hai accettato il regolamento";
    }
    Se non l'avessi capito confrontando le due pagine che ti ho linkato sopra:
    - unset() serve a disimpostare la variabile fornita come parametro (ovvero: dopo la chiamata, la variabile sarà sempre disimpostata)
    - isset() serve a verificare che la variabile fornita come parametro sia impostata (ma non esegue reimpostazioni o modifiche)

    Stammi bene...
    Ultima modifica di dementialsite : 01-02-2010 alle ore 14.25.31
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

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