Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    11

    modulo di registrazione utenti

    Salve a tutti,

    sto studiando solo da qualche settimana il php e quindi sono sicuro che ho commesso un errore stupidissimo nella scrittura delcodice.
    Devo realizzare ilsito per la mia associazione. In questo sito vi è un'area privata accessibile solo ai soci. La richiesta di registrazione deve passare sotto l'esame del consiglio direttivo, quindi il socio non può operare nell'area privata subito dopo la registrazione. Avevo pensato di risolvere questo problema inserendo nel form di registrazione un campo nascosto "livello" con valore predefinito 0. Poi una volta approvata la richiesta io stesso avrei cambiato in mysql il livello a 1.

    Smanettando, anche qui sul forum, guardando i numerosi esempi, sto cercando di scrivere il codice php da solo, anche per imparare e mettermi alla prova. Solo che ho dei problemi e non riesco a capire dove sbaglio.
    Posso chiedervi di assistermi man mano?
    Ho già scritto i codici dei vari file che mi servono e li vorrei testare

    ora posto il codice del file di registrazione. non vi è un campo username,in quanto mi hannochiestodi far fare l'autorizzazione da email. Purtroppo quando cerco di accedervi mi esce pagina bianca.

    <?php
    //include header.php
    include('../sito/header.php');
    //collegamento dal database
    require_once('../sito/config.php');
    //controll se l'utente è già loggato
    if($_SESSION['logged_in'] == 1)
    {
    //reindirizzamento alla home page
    header('Location: http://www.accalliope.it/area_riservata.php');
    }
    //l'utente non è loggato
    else {
    //il modulo non è stato ancora inviato
    if(isset($HTTP_POST_VARS['submit']))

    // controllo i vari campi anagrafici
    if(!$_POST['nome']) { die('Errore: Il campo nome risulta non compilato'); }
    if(!$_POST['cognome']) { die('Errore: Il campo cognome risulta non compilato'); }
    if(!$_POST['giorno']) { die('Errore: bisogna scegliere il giorno'); }
    if(!$_POST['mese']) { die('Errore: bisogna scegliere il mese'); }
    if(!$_POST['anno']) { die('Errore: bisogna scegliere l''anno'); }
    if(!$_POST['luogo_nascita']) { die('Errore: Il campo luogo di nascita risulta non compilato'); }
    if(!$_POST['indirizzo']) { die('Errore: Il campo indirizzo risulta non compilato'); }
    if(!$_POST['cap']) { die('Errore: Il campo cap risulta non compilato'); }
    if(!$_POST['citta']) { die('Errore: Il campo nome città non compilato'); }
    if(!$_POST['provincia']) { die('Errore: Il campo provincia risulta non compilato'); }

    {
    // controllo i dati relativi all'email
    if(!$_POST['email']) die('Attenzione : il campo email è vuoto');
    // controllo la validità del campo email
    if((!isset($_POST['email'])) || (!eregi("^([a-z0-9._-]+)(@[a-z0-9.-]+)(.{1}[a-z]{2,4})$", $_POST['email']))) die ('Attenzione: immettere un indirizzo email valido');
    }
    # //controllo dati relativi alla password
    if(!$_POST['password']) {
    die('Errore: Il campo password risulta non compilato');
    }
    if(!$_POST['verifica_password']) {
    die('Errore: Il campo verfica password risulta non compilato');
    }
    if($_POST['password'] != $_POST['verifica_password']) {
    die('Errore: Le passwords non corrispondono.');
    }

    # //Inserisco il nuovo membro nel database
    $insert ="INSERT INTO `soci` (nome, cognome, giorno, mese, anno, luogo_nascita, indirizzo,cap, citta, provincia, email, password, livello) VALUES ('".$_POST['nome']."',
    '".$_POST['cognome']."', '".$_POST['giorno']."', '".$_POST['mese']."' , '".$_POST['anno']."' , '".$_POST['luogo_nascita']."' , '".$_POST['indirizzo']."', '".$_POST['cap']."', '".$_POST['citta']."', '".$_POST['provincia']."',

    '".$_POST['email']."','".md5($_POST['password'])."', '".$_POST['livello']."')";
    $insert2 = mysql_query($insert);
    if(!$insert2) die(mysql_error());
    //Edito i parametri sottostanti con i dati relativi al sito
    $web_site = 'www.accalliope.it';
    $webmaster = 'Associazione Culturale Calliope';
    $web_mail = 'direttivo@accalliope.it';
    // Fine modifica
    //Passo i dati per il login a variabili da mandare via mail all'utente
    $mail_utente = $_POST['email'];
    $pass_utente = $_POST['password'];

    $header = "From: ". $web_site . " <" . $web_mail . ">\r\n";
    # // Edito l'oggetto e il messaggio
    $subject = "Dettagli registrazione";
    $message = "Gentile $nome $cognome, l'Associazione Culturale Calliope ti ringrazia per esserti registrato su $web_site. La tua richiesta sarà adeso esaminata
    dal consiglio direttivo e in caso di approvazione riceverai l'emailspecifica.
    Per usufruire dei nostri servizi devi semplicemente inserire questi dati nel login apposito:
    Email: $mail_utente
    Password: $pass_utente

    Conserva queste informazioni o meglio ancora stampa questa mail.

    Grazie infinite,
    $webmaster";
    // Spedisc la mail
    mail($mail_utente, $subject, $message, $header);
    $subject1 = "Richiesta di iscrizione";
    $message1= "Spett.le Associazione Culturale Calliope,
    $nome, $cognome, $email,richiede di poter accedere alla sezione privata del sito";
    mail ($web_mail, $subject1, $message1, $header);
    echo('Registrazione avvenuta, Benvenuto !!!

    Le informazioni che ci hai fornito ti sono state spedite via mail.');
    }
    //il modulo non è stato ancora compilato
    else {
    ?>
    <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" name="iscrizione" id="iscrizione">

    poi vi è il form e lo chiudo così:
    </form>
    <?
    } //fine utente non loggato
    } //fine modulo non inviato
    ?>

  2. #2

    Re: modulo di registrazione utenti

    Avevo pensato di risolvere questo problema inserendo nel form di registrazione un campo nascosto "livello" con valore predefinito 0. Poi una volta approvata la richiesta io stesso avrei cambiato in mysql il livello a 1.
    soluzione DA NON USARE MAI:
    ricorda,MAI e dico MAI attenerti alle informazioni dell'utente,si certo il campo è nascosto ma ci vuole pochissimo per un utente anche non troppo smanettone per modificarti il campo a 1 e evitare l'approvazione.

    In poche parole quello che devi fare è:

    1)creare un form in POST(come hai gia fatto)con SOLO i dati da compilare(username,pwd...)

    2)creare una pagina che legga tutti i dati POST,vada in errore( come hai fatto te) se qualche campo è errato e se corretto crea un nuovo utente con questi campi(indicativi,se vuoi cambiare nomi o aggiungere fai pure)in una tabella mysql:

    username,password,email,isactive,isadmin(o livello se preferisci)
    dove username dev'essere UNIVOCO e non null
    password e email non null
    isactive a default 0(indica se l'utente è attivo,lo setti a 0 nella registrazione,attivi l'utente settandolo a 1 e nel login se è a 0 gli dici che non è attivo)
    isadmin(o un intero se preferisci gestire piu livelli)di default a 0 cosi indichi se l'utente ha privilegi da admin.

    RICORDATI di guardare anche molto bene il problema di sql injection e ti consiglio,se ti è piu facile lavorare object oriented,di crearti una bella classe per gestire login e logout oltre ovviamente a usare le sessioni per mantenere il login.

    comunque ricordati PRIMA di inserire l'utente nel db di controllare che non esista gia un'utente con lo stesso nome!

    Per validazione via email fai una pagina(il cui url includerai nell'email)tipo questa

    valida.php?username=nuovoutente

    che visualizzera un login,se l'utente è admin puo scegliere se validare l'utente passato

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    11
    si,ho capito e ti ringrazio,ma ioi filein questione li ho già creati, solo che ho dei problemi e vorrei avere una mano per capire dove ho sbagliato.
    Ho modificato il file e ho tolto il campo nascosto, settandolo direttamente a 0 nella registrazione,ma il problema è che la pagina della registrazione mi esce bianca quando mi ci collego.
    Mi potreste aiutare a capire l'errore?

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.