Visualizzazione risultati 1 fino 2 di 2

Discussione: ho un problema con un if...

  1. #1
    Guest

    Predefinito ho un problema con un if...

    Codice PHP:
    <html>
    <head></head>
    <body>
    <?PHP
    @$pass=@$_GET["pass"];

    if(@
    $_GET["user"]!=NULL){
    $file = @$_GET["user"].".txt";
    $faperto = fopen($file, "r");
    $i=0;

    while(
    $contenuto = fgets($faperto)){
    $i++;
    $passw[$i]=$contenuto;
    }
    fclose($faperto);

    if(
    $pass==$passw[4]){
    echo
    "ok passw giusta ".$pass;
    }
    echo
    $passw[4]." ".$pass;
    }


    ?>

    <form action="formpass.php" method="get">

    user:<input type="user" name="user" /><br/>
    pass:<input type="password" name="pass" /><br/>
    <input type="submit" value="invio" />
    <input type="reset" value="cancella" /><br>
    </form>
    </body>
    </html>
    non capisco perchè $pass $pass[4] per l'if non sono uguali se quando li stampo a video risultano uguali????
    Ultima modifica di dreadnaut : 01-11-2009 alle ore 00.00.44 Motivo: + tag [php]

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    perché ogni elemento in $pass[] contiene il ritorno a capo a fine riga. Dalla guida di fgets()
    Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value), or on EOF (whichever comes first). If no length is specified, it will keep reading from the stream until it reaches the end of the line.
    Puoi rimuovere i ritorni a capo usando trim() ed array_map(), e leggere il file in un unica operazione usando file().

    Codice PHP:
    // verifica i parametri GET, senza troppe @
    $pass = isset($_GET['pass']) ? $_GET['pass'] : false;
    $user = isset($_GET['user']) ? $_GET['user'] : false;

    if (
    $user) {
    $passw = file( $user . '.txt' ); // carica tutte le righe del file in un array
    $passw = array_map('trim', $passw); // applica trim a tutti gli elementi

    if ($pass == $passw[4]) {
    echo
    "ok passw giusta " . $pass;
    }

    echo
    $passw[4]." ".$pass;
    }

Regole di scrittura

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