• User

    Problema form limitazione lunghezza password

    Salve a tutti.
    Volevo porre un problema. Ho un form che serve per far registrare gli utenti all'interno del mio sito. La password avevo pensato di limitarla tra 6 e 10 caratteri. Premetto che il form funziona alla perfezione, nel senso che i dati, se inseriti correttamente, vengono registrati sul database.

    Naturalmente il form manda i dati ad un file php, che vi posto:

    [php]
    <?php
    session_start();
    $username = htmlentities(strip_tags($_POST["username"]));
    $password = htmlentities(strip_tags($_POST ["password"]));
    $conferma = htmlentities(strip_tags($_POST ["confermapassword"]));
    $nome = htmlentities(strip_tags($_POST["nome"]));
    $cognome = htmlentities(strip_tags($_POST["cognome"]));
    $mail = htmlentities(strip_tags($_POST["mail"]));
    $quesito = htmlentities(strip_tags($_POST["quesito"]));
    $risposta = htmlentities(strip_tags($_POST["risposta"]));

    $_SESSION['alert'] = '';

    if(!$password){$_SESSION['alert']['password'] = 'La password è obbligatoria<br>';}
    if(strlen($password) < 6 || strlen($password) > 10){$_SESSION['alert']['password'] = 'La password deve essere minimo 6 caratteri e al massimo 10<br>';}
    if(!$conferma){$_SESSION['alert']['confermapassword'] = 'La conferma è obbligatoria<br>';}
    if(strlen($conferma) < 6 || strlen($conferma) > 10){$_SESSION['alert']['confermapassword'] = 'La password deve essere minimo 6 caratteri e al massimo 10<br>';}

    if(!$username){$_SESSION['alert']['username'] = "L'user è obbligatorio<br>";}
    if(!$nome){$_SESSION['alert']['nome'] = "Il nome è obbligatorio<br>";}
    if(!$cognome){$_SESSION['alert']['cognome'] = "Il cognome è obbligatorio<br>";}
    if(!$mail){$_SESSION['alert']['mail'] = "La mail è obbligatoria<br>";}
    if(!$quesito){$_SESSION['alert']['quesito'] = "Domanda obbligatoria<br>";}
    if(!$risposta){$_SESSION['alert']['risposta'] = "Risposta obbligatoria<br>";}

    if($_SESSION['alert']){
    header('Refresh: 0; URL=' .'formregistrazerror.php');
    }
    else
    {

    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    $sql = "SELECT * FROM utenti WHERE username = '$username'";
    $result = mysql_query ($sql) or die (mysql_error());
    $n = mysql_num_rows($result);

    if ($n != 0)
    {
    echo "nome utente già occupato<br>";
    echo "<a href="java-script:history.back()">ritenta</a> con un altro UserName";
    }
    else
    {
    $ip = $REMOTE_ADDR;
    $sql = "INSERT INTO utenti (id, username, password, confermapassword, nome, cognome, mail, quesito, risposta, data, ip) VALUES ('', '$username', MD5('$password'), MD5('$conferma'), '$nome', '$cognome', '$mail', '$quesito', '$risposta', '$data', '$ip')";
    $query = mysql_query ($sql) or die (mysql_error());

    echo "dati inseriti<br>";
    [/php]

    Come potete vedere uso una session allert, che qualora mi dimenticassi di inserire i dati oppure li inserissi non corretti (come nel caso lunghezza passw), si viene rimandati al file formregistrazerror.php, che contiene praticamente lo stesso codice del form originale ma con l'aggiunta del richiamo (in php) del dato mancante. Per intenderci:

    [php]
    <?php if(isset($_SESSION['alert']['username'])){echo $_SESSION['alert']['username'];} ?>
    [/php]

    Il problema dove sta? Che non mi funziona la parte relativa al richiamo password. Se ad esempio non la inserisco, invece che uscire la scritta "la password è obbligatoria", esce la scritta "la password deve essere compresa tra 6 e 10 lettere". Perchè?
    Dipende forse dal fatto che nel momento in cui mando i dati nel form poi col POST non inserisco il controllo della lunghezza?

    Se è questo il problema, oppure un altro, come ovviare?

    Grazie mille


  • Moderatore

    fai così:

    [php]
    <?php
    session_start();
    $username = htmlentities(strip_tags($_POST["username"]));
    $password = htmlentities(strip_tags($_POST ["password"]));
    $conferma = htmlentities(strip_tags($_POST ["confermapassword"]));
    $nome = htmlentities(strip_tags($_POST["nome"]));
    $cognome = htmlentities(strip_tags($_POST["cognome"]));
    $mail = htmlentities(strip_tags($_POST["mail"]));
    $quesito = htmlentities(strip_tags($_POST["quesito"]));
    $risposta = htmlentities(strip_tags($_POST["risposta"]));

    $_SESSION['alert'] = '';

    if($password==""){$_SESSION['alert']['password'] = 'La password è obbligatoria<br>';}
    if(strlen($password) < 6 || strlen($password) > 10){$_SESSION['alert']['password'] = 'La password deve essere minimo 6 caratteri e al massimo 10<br>';}
    if(!$conferma){$_SESSION['alert']['confermapassword'] = 'La conferma è obbligatoria<br>';}

    if(!$username){$_SESSION['alert']['username'] = "L'user è obbligatorio<br>";}
    if(!$nome){$_SESSION['alert']['nome'] = "Il nome è obbligatorio<br>";}
    if(!$cognome){$_SESSION['alert']['cognome'] = "Il cognome è obbligatorio<br>";}
    if(!$mail){$_SESSION['alert']['mail'] = "La mail è obbligatoria<br>";}
    if(!$quesito){$_SESSION['alert']['quesito'] = "Domanda obbligatoria<br>";}
    if(!$risposta){$_SESSION['alert']['risposta'] = "Risposta obbligatoria<br>";}

    if($_SESSION['alert']){
    header('Refresh: 0; URL=' .'formregistrazerror.php');
    }
    else
    {

    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    $sql = "SELECT * FROM utenti WHERE username = '$username'";
    $result = mysql_query ($sql) or die (mysql_error());
    $n = mysql_num_rows($result);

    if ($n != 0)
    {
    echo "nome utente già occupato<br>";
    echo "<a href="java-script:history.back()">ritenta</a> con un altro UserName";
    }
    else
    {
    $ip = $REMOTE_ADDR;
    $sql = "INSERT INTO utenti (id, username, password, confermapassword, nome, cognome, mail, quesito, risposta, data, ip) VALUES ('', '$username', MD5('$password'), MD5('$conferma'), '$nome', '$cognome', '$mail', '$quesito', '$risposta', '$data', '$ip')";
    $query = mysql_query ($sql) or die (mysql_error());

    echo "dati inseriti<br>";
    [/php]