Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    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:

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

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

    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
    "
    ;
    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
    "
    ;
    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:

    Codice PHP:
    <?php if(isset($_SESSION['alert']['username'])){echo $_SESSION['alert']['username'];} ?>
    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

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Nessuno che può darmi una mano a risolvere il problema?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    la lunghezza della password puoi controllarla cosi:

    if (strlen($password)<6 or strlen($password)>10)
    { //esegui codice di errore }


    ciao ciao

    igor

  4. #4
    Ma ha già questo controllo all'interno del codice!...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Infatti, ho già questo controllo all'interno del codice. Soltanto che nel caso della password, come detto, il messaggio di errore è sempre lo stesso, ossia:

    "La password deve avere minimo 6 caratteri e al massimo 10".

    Questo messaggio appare sia che scriva la pass con un numero di caratteri diversi (e ciò sarebbe giusto) sia che non la scriva (in questo caso è sbagliato perchè, come si vede dal codice, il controllo sull'errore dovrebbe dare "la password è obbligatoria")

    E' come se il codice non riconosca la prima stringa di errore ma prenda in considerazione solo la seconda. Cioè questa:

    Codice PHP:
    if(strlen($password) < || strlen($password) > 10){$_SESSION['alert']['password'] = 'La password deve essere minimo 6 caratteri e al massimo 10
    '
    ;} 
    Perchè?

  6. #6
    Prova così

    if((strlen($password) < 6 || strlen($password) > 10) && $password!='')

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.