Visualizzazione risultati 1 fino 16 di 16

Discussione: Form registrazione: validare l'email e altro...

  1. #1
    Guest

    Exclamation Form registrazione: validare l'email e altro...

    Ciao a tutti...
    Come sempre ho bisogno di voi per qualche cosuccia in PHP
    Veniamo al dunque, ho questo script per registrarsi ad un sito:
    Codice PHP:
    <?php
    $messaggio
    ="Registrazione richiesta da: $_POST[nome] $_POST[cognome]\n Dati Cliente:\nNome: $_POST[nome]\nCognome: $_POST[cognome]\nNickname: $_POST[nick]\nPassword scelta: $_POST[pass]\nE-mail: $_POST[email]\nCittà: $_POST[citta]\nProvincia: $_POST[luogo]\nTelefono: $_POST[telefono]\nData registrazione: $_POST[data]\nOra registrazione: $_POST[ora]\nCommenti rilasciati: $_POST[testo]\nInviare news e offerte: $_POST[news]\nIP: $REMOTE_ADDR";
    if (
    mail("indirizzoemail@server.com", "Registrazione richiesta da: $_POST[nome] $_POST[cognome]", $messaggio))
    {
    print
    'Richiesta di registrazione inviata correttamente! A breve sarai contattato da... ';
    }
    else
    {
    print
    'Registrazione non effettuata, riprova!';
    }
    ?>
    vorrei aggiungere a questo script la funzione di controllo email, che è una cosa del genere:
    Codice PHP:
    if (eregi("^([a-z0-9.-])+@(([a-z0-9-])+.)+[a-z.]{2,6}$", trim($email)))
    ma non so dove cacchio inserirlo nel resto dello script

    Inoltre vorrei che quando un'utente si iscrive, vorrei che in automatico gli arrivasse una email di benvenuto con tutti i suoi dati e un altro paio di cose aggiuntive che inserirò io (come succede quando ti iscrivi ad AV)

    ...c'è qualche buona anima disposta ad aiutarmi?!? Grazie in anticipo a tutti!!!
    ...byex!

  2. #2
    Guest

    Predefinito

    Ciao, per controllare la validità dell'indirizzo email non ti serve altro che usare una semplice struttura if/else :)

    ad esempio:

    Codice:
    if (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $_POST['email']))
        {
            echo "indirizzo email non valido";
        }
        else
        {
            // qui metti il codice x l'invio dell'email
        }
    comunque oltre che a fare controlli sulla validità dell'indirizzo email, fossi in te controllerei meglio quello che fai passare da un form e che vengano omessi tutti i dati basilari utili per la registrazione.. (se non hai capito cosa intendo chiedi pure naturalmente :) )

    per quanto riguarda il tuo "secondo problema" , devi mandare un'altra email riutilizzando gli stessi dati che prendi dal form all'invio, ma cambiare destinatario e testo dell'email come + ti piace (quindi se il controllo su tutti i dati che dovresti controllare è andato a buon fine mandi sia l'email a te che all'utente)

    Se hai bisogno di una mano, fa' un fischio :)

    Ciao
    BaD_TuX

    ps = scusate se c'è qualche strafalcione ma il sonno comincia a farsi sentire :)

  3. #3
    Guest

    Predefinito

    Ciao, ho fatto come mi hai detto, ma mi esce questo errore > Parse error: syntax error, unexpected $end in /membri/... on line 17
    ecco il codice:
    Codice PHP:
    <?php
    if (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $_POST['email']))
    {
    echo
    "Indirizzo e-mail non valido, ricontrolla l'indirizzo!";
    }
    else
    {
    $messaggio="Registrazione richiesta da: $_POST[nome] $_POST[cognome]\n Dati Cliente:\nNome: $_POST[nome]\nCognome: $_POST[cognome]\nNickname: $_POST[nick]\nPassword scelta: $_POST[pass]\nE-mail: $_POST[email]\nCittà: $_POST[citta]\nProvincia: $_POST[luogo]\nTelefono: $_POST[telefono]\nData registrazione: $_POST[data]\nOra registrazione: $_POST[ora]\nCommenti rilasciati: $_POST[testo]\nInviare news e offerte: $_POST[news]\nIP: $REMOTE_ADDR";
    if (
    mail("email@server.com", "Registrazione richiesta da: $_POST[nome] $_POST[cognome]", $messaggio))
    {
    print
    'Richiesta di registrazione inviata correttamente! A breve sarai contattato da ...';
    }
    else
    {
    print
    'Registrazione non effettuata, riprova!';
    }
    ?>
    cosa c'è che non va?

    Inoltre non ho capito molto bene la tua risposta al mio "secondo problema"
    ...help me, please!
    ...byex!

  4. #4
    Guest

    Predefinito

    ti sei scordato di chiudere l'if, devi inserire una } subito prima del tag di chiusura di php.

  5. #5
    Guest

    Predefinito

    Non hai inserito una graffa che chiude l'else

    Codice PHP:
    <?php
    if (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $_POST['email']))
    {
    echo
    "Indirizzo e-mail non valido, ricontrolla l'indirizzo!";
    }
    else
    {
    $messaggio="Registrazione richiesta da: $_POST[nome] $_POST[cognome]\n Dati Cliente:\nNome: $_POST[nome]\nCognome: $_POST[cognome]\nNickname: $_POST[nick]\nPassword scelta: $_POST[pass]\nE-mail: $_POST[email]\nCittà: $_POST[citta]\nProvincia: $_POST[luogo]\nTelefono: $_POST[telefono]\nData registrazione: $_POST[data]\nOra registrazione: $_POST[ora]\nCommenti rilasciati: $_POST[testo]\nInviare news e offerte: $_POST[news]\nIP: $REMOTE_ADDR";
    if (
    mail("email@server.com", "Registrazione richiesta da: $_POST[nome] $_POST[cognome]", $messaggio))
    {
    print
    'Richiesta di registrazione inviata correttamente! A breve sarai contattato da ...';
    }
    else
    {
    print
    'Registrazione non effettuata, riprova!';
    }
    }
    ?>
    Per mandare l'emai di conferma all'utente, non devi far mandare un'altra email nello script (devi inserire il codice per l'email nel primo else) quindi potresti fare una cosa del genere (dovrebbe funzionare)

    Codice PHP:
    <?php
    if (!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $_POST['email']))
    {
    echo
    "Indirizzo e-mail non valido, ricontrolla l'indirizzo!";
    }
    else
    {
    $messaggio1= "prima mail";
    $messaggio2= "email benvenuto";

    if (!
    mail("email@server.com", "Registrazione richiesta da: $_POST[nome] $_POST[cognome]", $messaggio) && !mail("qui costruisci l'email di bevenuto"))
    {
    echo
    "errore";
    }
    else
    {
    echo
    "ok";
    }
    }
    ?>

  6. #6
    Guest

    Predefinito

    Grazie Jo & Badtux... A volte non faccio attenzione alle minime cose

    @ badtux: ti dispiacerebbe inserirmi il codice del "secondo problema" nello script? grazie 1000... Non ho capito dove cavolo lo devo mettere

  7. #7
    Guest

    Predefinito

    Ho messo giù una bozza , mi potrebbe essere sfuggito qualcosa e ammetto che non è il massimo della vita, ma il suo lavoro lo fa o comunque dovrebbe darti una buona base per modificarlo/rifarlo come + ti aggrada :)

    Codice PHP:
    /* controlliamo che siano stati compilati tutti i campi del form */

    if( trim(empty($_POST['nome'])) OR
    trim(empty($_POST['cognome'])) OR
    trim(empty($_POST['nick'])) OR
    trim(empty($_POST['pass'])) OR
    trim(empty($_POST['email'])) OR
    trim(empty($_POST['citta'])) OR
    trim(empty($_POST['luogo'])) OR
    trim(empty($_POST['telefono'])) OR
    trim(empty($_POST['data'])) OR
    trim(empty($_POST['ora'])) OR
    trim(empty($_POST['testo'])) OR
    trim(empty($_POST['news'])))
    {
    $_TEMP .= "Errore! Sei sicuro di aver compilato tutti i campi del form?";
    }

    /* controlliamo il formato dell'email */

    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $_POST['email']))
    {
    $_TEMP .= "Errore! Non hai inserito un indirizzo email valido!";
    }
    /* se l'if e l'elseif sono andati a buon fine... */
    /* con $_HEA si intendono i contenuti che arrivano all'admin e con $_HEB quelli che devono arrivare all'utente */
    else{
    $_HEA .= "Registrazione richiesta da: ".$_POST['nome']." ".$_POST['cognome']."\n";
    $_HEB .= "Benvenuto ".$_POST['nome']." ".$_POST['cognome']."!\n";
    $_HEA .= "Dati Cliente:\n";
    $_HEB .= "Qui sotto trovi i tuoi dati di registrazione\n";
    $_MEX .= "Nome: ".$_POST['nome']."\n";
    $_MEX .= "Cognome: ".$_POST['cognome']."\n";
    $_MEX .= "Nickname: ".$_POST['nick']."\n";
    $_MEX .= "Password scelta: ".$_POST['pass']."\n";
    $_MEX .= "E-mail: ".$_POST['email']."\n";
    $_MEX .= "Città: ".$_POST['citta']."\n";
    $_MEX .= "Provincia: ".$_POST['luogo']."\n";
    $_MEX .= "Telefono: ".$_POST['telefono']."\n";
    $_MEX .= "Data registrazione: ".$_POST['data']."\n";
    $_MEX .= "Ora registrazione: ".$_POST['ora']."\n";
    $_MEX .= "Commenti rilasciati: ".$_POST['testo']."\n";
    $_MEX .= "Inviare news e offerte: ".$_POST['news']."\n";
    $_MEX .= "IP: ".$_SERVER['REMOTE_ADDR']."\n";
    $_HEB .= "Grazie per esserti registrato!";

    /* unifichiamo il tutto , $_YOU sarà il messaggio che arriverà all'admin, $_CLI quello che arriverà all'utente/cliente .. */
    $_YOU = $_HEA. "" .$_MEX;
    $_CLI = $_HEB. "" .$_MEX;

    /* gli oggetti dell'email, $_OBY l'oggetto nell'email dell'admin, $_OBC l'oggetto dell'email dell'utente/cliente */
    $_OBY = "Registrazione richiesta da: ".$_POST['nome']." ".$_POST['cognome']."";
    $_OBC = "Bevenuto " .$_POST['nome']."";

    /* inviamo le email... cambia tuaemail@server.com con la tua email :) */
    if (mail("tuaemail@server.com", $_OBY , $_YOU) && mail($_POST['email'], $_OBC, $_CLI))
    {
    $_TEMP .= "Richiesta di registrazione inviata correttamente! A breve sarai contattato da... ";
    }
    /* se ci sono stati dei problemi durante l'invio... */
    else
    {
    $_TEMP .= "Registrazione non effettuata, riprova!";
    }
    }
    /* mandiamo l'output */
    echo $_TEMP;
    In pratica manda una notifica di registrazione alla tua casella di posta e una mail di benvenuto all'utente.. il codice mi pare abbastanza commentato quindi non ho altro da aggiungere :)

    Fammi sapere come funziona...

    Ciao
    BaD_TuX
    Ultima modifica di BadTux : 18-06-2006 alle ore 00.15.49

  8. #8
    Guest

    Predefinito

    @ bastux: grazie mille, funziona alla perfezione ed ho già modificato tutto quello che mi serviva...
    Solo una domanda: ma per mettere più spazio in verticale, bisogna utilizzare 2 \n, quindi così (?): \n\n
    Fatemi sapere...
    ...byex!

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da TurkoSoft
    @ bastux: grazie mille, funziona alla perfezione ed ho già modificato tutto quello che mi serviva...
    Solo una domanda: ma per mettere più spazio in verticale, bisogna utilizzare 2 \n, quindi così (?): \n\n
    Fatemi sapere...
    ...byex!
    esattamente come hai detto tu

  10. #10
    Guest

    Predefinito

    senti JO, io ho fatto na cosa del genere:
    Codice PHP:
    ecc...
    $_MEX .= "IP: ".$_SERVER['REMOTE_ADDR']."\n\n";
    $_MEX .= "Per loggarti, segui questo link: http://ecc.login.php";
    ecc...
    però mi dà un'errore di sintassi...
    Cosa c'è che non và?
    help me, please!
    ...byex!

  11. #11
    Guest

    Predefinito

    posta tutto il codice che hai scritto e l'errore esatto.

  12. #12
    Guest

    Predefinito

    errore di sintassi o di formattazione?

  13. #13
    Guest

    Predefinito

    rieccomi...
    perchè non mi converte <a href='http://ecc.'>LINK</a> in questo pezzo di codice (?):
    Codice PHP:
    ...resto codice
    $_MEX
    .= "Per loggarti, segui questo link: <a href='http://ecc.login.php'>LINK</a>";
    ...
    resto codice
    ...help me please... grazie ancora per l'aiuto!
    ...byex!

  14. #14
    Guest

    Predefinito

    probabilente perchè l'email viene inviata in formato text/plain e non text/html
    per risolvere all'inizio del messaggio scrivi:
    This is a multi-part message in MIME format.\n
    --$boundary\n
    Content-Type: text/html; charset=iso-8859-1\n
    Content-Transfer-Encoding: 8bit\n\n


    devi creare la varibile
    $boundary='--' . md5( uniqid(time()) );

  15. #15
    Guest

    Predefinito

    quindi modifico così (?):
    Codice PHP:
    $boundary='MESSAGGIO ECC...' . md5( uniqid(time()) );

  16. #16
    Guest

    Predefinito

    nono $boundary lo deiv lasciare così....mentre quello che ti ho scritto priam lo devi mettere in cima a tutto il msg

Regole di scrittura

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