• User

    Controllo e-mail

    Ciao! ho un problema con il controllo e-mail, se l' e-mail è giusta mi dice che è giusta e registra i campi nel database, se l'e-mail è sbagliata mi dice che è sbagliata ma registra sempre, come si puo fare?
    Praticamente se uno digita un indirizzo e-mail che non rispecchia le caratteristiche tipiche ( @ . ) la registrazione avviene ugualmente.
    Praticamente faccio il controllo ma nonfermo la registrazione in caso di errore.
    Vi mando il codice della pagina.
    <?php
    $email=$_POST['email'];
    $pwd=$_POST['pwd'];
    $pwd_conferma=$_POST['pwd_conferma'];
    $radio=$_POST['radio'];

    //controllo e-mail
    $email = $POST['email'];
    if (preg_match('/^[^0-9][a-zA-Z0-9
    ]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
    echo "e-mail esatta<br><br>";
    } else {
    echo "e-mail sbagliata<br><br>";
    }
    //fine controllo e-mail
    // verifica campi obbligatori
    if(($email == '') ||($pwd == '')||($radio == '') )
    {
    echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
    }

    elseif($pwd==$pwd_conferma)

    //registrazione
    $query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die ("e-mail gia presente <br><br>Torna alla registrazione<br><br><br>".mysql_error());

    if($pwd == $pwd_conferma)
    {
    echo "<br><br>Ciao! $email <br><br>";
    }
    else
    {
    echo "Le password inserite non coincidono&nbsp<br><br>Riprova!<br><br>";

    }

    ?>

    Come lo trovate?
    Tanti saluti.


  • User

    Il problema è che la funzione echo non interrompe lo script.
    Dovresti sostituire questo
    [PHP]echo "e-mail sbagliata<br><br>";[/PHP]
    con questo:
    [PHP]echo "e-mail sbagliata<br><br>";
    exit;[/PHP]


  • User
    <?php 
    $email=$_POST['email'];
    $pwd=$_POST['pwd'];
    $pwd_conferma=$_POST['pwd_conferma'];
    $radio=$_POST['radio']; 
    
    $errore = false;
    
    //controllo e-mail
    $email = $_POST['email'];
    if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) {
    	echo "e-mail esatta<br /><br />";
    } else {
    	echo "e-mail sbagliata<br /><br />";
    	$errore = true;
    }
    //fine controllo e-mail
    // verifica campi obbligatori
    if(($email == '') || ($pwd == '') || ($radio == '') ) { 
    	echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
    	$errore = true;
    }
    
    if($pwd != $pwd_conferma && ) {
    	echo "Registrazione non riuscita <p>la password non corrispondono!</p>";
    	$errore = true;
    }
    
    if(!$errore) {
    	//registrazione
    	$query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die ("e-mail gia presente <br><br>Torna alla registrazione<br><br><br>".mysql_error());
    }
    
    
    if($query) {
    	echo "<br /><br />Ciao! $email <br /><br b/>";
    } 
    
    
    ?> 
    

  • User

    Rispondo a RCayla,
    Ho aggiustato il tutto con il tuo consiglio, adesso funziona se l'email non ha @ e il . non ti fa registrare.
    Visto che ci siamo per inserire un link nel codice come si fà?
    In modo che quando uno sbagliava l'e-mail aveva il link per tornare alla registrazione.
    Un link lo fatto solo fuori dal codice e si vede solo se tutto va a buon fine.
    Ti rimando il codica per vedere la differenza da questo e il primo.Ti saluto e grazie mille.
    <?php
    $email=$_POST['email'];
    $pwd=$_POST['pwd'];
    $pwd_conferma=$_POST['pwd_conferma'];
    $radio=$_POST['radio'];

    // verifica campi obbligatori
    if(($email == '') ||($pwd == '')||($pwd_conferma=='') ||($radio == '') )
    {
    echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
    }
    //controllo e-mail
    $email = $POST['email'];
    if (preg_match('/^[^0-9][a-zA-Z0-9
    ]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
    echo "e-mail esatta<br><br>";
    } else {
    echo "e-mail sbagliata<br><br>";
    exit;
    }
    //fine controllo e-mail
    if($pwd==$pwd_conferma)
    //registrazione
    $query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die (mysql_error());

    if($pwd == $pwd_conferma)
    {
    echo "Registrazione Riuscita<br><br>Ciao! $email <br><br>";
    }
    else
    {
    echo "Le password inserite non coincidono&nbsp<br><br>Riprova!<br><br>";
    }

    ?>


  • User

    Sono riuscito a fare il link.
    Dopo varie prove ho scoperto che se l'email è giusta,ma senza i campi pwd e pwd_conferma pieni mi registra ugualmente.
    Cosi nel database mi trovo solo il campo e-mail.
    Continuo a provare, da cosa e dato l'errore?.
    AIUTO.

    CIAO!!!!!!!!!!


  • User

    Caro fiscet ho provato anche il tuo mi dava errore qui
    if($pwd != $pwd_conferma && ), ho messo gli apici ,
    if('$pwd != $pwd_conferma &&' ),li andava ma mi dava che cera una variabile indefinita.
    Provo ancora.
    $errore = true;, cosa vuol dire la variabile $errore.
    Ciao!,aspetto consigli, anche perchè va bene da una parte e male dall'altra, prima o poi funzionerà il tutto.


  • User

    Ciao,
    sì c' un errore, i due && non ci vanno 🙂


  • User

    Riguardo i due campi vuoti è la stessa cosa dell'emmail errata, devi mettere un "exit;" dopo l'echo.
    Ecco il codice completo:
    [PHP]<?php
    $email=$_POST['email'];
    $pwd=$_POST['pwd'];
    $pwd_conferma=$_POST['pwd_conferma'];
    $radio=$_POST['radio'];

    // verifica campi obbligatori
    if(($email == '') ||($pwd == '')||($pwd_conferma=='') ||($radio == '') )
    {
    echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
    exit;
    }
    //controllo e-mail
    if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
    echo "e-mail esatta<br><br>";
    } else {
    echo "e-mail sbagliata<br><br>";
    exit;
    }
    //fine controllo e-mail
    if($pwd==$pwd_conferma)
    //registrazione
    $query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die (mysql_error());

    if($pwd == $pwd_conferma)
    {
    echo "Registrazione Riuscita<br><br>Ciao! $email <br><br>";
    }
    else
    {
    echo "Le password inserite non coincidono&nbsp<br><br>Riprova!<br><br>";
    }

    ?>[/PHP]


  • User

    RCayla, OK funziona.
    Grazie mille.
    Alla prossima


  • User

    PER fiscet,
    ho provato li mi funziona.
    Mi da errore, mi dice che la variabile $query non e definita,
    Ho prvato a definirla così:
    $query= true;
    if($query) {
    echo "<br /><br />Ciao! $email <br /><br b/>";
    Funzionava ma non andava ancora bene.