Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    il while non esce con escape

    Questo codice mi crea problemi nel riconoscere usrname tramite l'operatore == con usrsearch.
    In pratica leggo un file(contenente il nome usrname ed altri) ma l'echo continua fino alla fine del file, cioe' il while non esce tramite l'escape.
    Codice PHP:
    do{
    $usrsearch filter_var(fgets($h),FILTER_SANITIZE_STRING);
    if (
    $usrsearch===$usrname){
        
    $escape=true;
    }else 
    $m++;
    echo(
    $usrsearch);
    }while(!
    feof($h) and !$escape); 
    jabjoint

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    29
    Se il tuo file è composto dal nome utente separato da un carattere separatore (new line o carrige return o entrambi) devi creare un array numerato e confrontare $usersearch[$i] con $usrname se uguale interrompi il ciclo while altrimenti prosegui.
    Il do while verrà valutato almeno una volta anche se la condizione è falsa.
    $i è una variabile all'esterno del do while con valore 0 e poi se diverso da feof crea altre variabili e quindi il puntatore sarà incrementato + 1, $i++; però se $check = true se tale variabile è true devi fermarti (il titolo della discussione è fuorviante non c'entra l'escape ma più che altro il blocco dell'uguaglianza che giustamente io chiamo $check).
    Ovviamente $check prima del do while inizialmente sarà impostato su false.
    Comunque generalmente sarebbe idoneo studiare se è presente la possibilità di effettuare un'escape.
    Ti faccio un un'esempio considera O'Reilly con la funzione mysqli_real_escape_string inserisce l'escape "\" all'apice singolo dentro al database avrà l'escape e il confronto è se la query restituisce true.

  3. #3
    Quote Originariamente inviata da darbula Visualizza il messaggio
    Se il tuo file è composto dal nome utente separato da un carattere separatore (new line o carrige return o entrambi) devi creare un array numerato e confrontare $usersearch[$i] con $usrname se uguale interrompi il ciclo while altrimenti prosegui.
    Ok, vevo intuito potesse essere il new line. Infatti il file creato in Linux è con nomi a capo.
    Questo ha un codice ascii, dunque posso inserirl il carattere alla fine dell' usrname e dovrebbe funzionare.., non vedo il motivo di creare array....

    **Risolto con chr(10) in appendice. Grazie.
    Ultima modifica di jabjoint; 29-08-2020 a 14:51
    jabjoint

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    29
    Il decimale 10 new line è "\n" ma i sistemi operativi Linux non dovrebbero cambiare quel carattere in qualcos'altro poteva esistere in Windows prima della versione php 4.3 che convertiva "\n" in "\r\n".
    L'escape va racchiuso tra apici doppi altrimenti non interpreta la giusta rappresentazione c'è un un'eccezione se creo una stringa tra apici singoli posso aggiungere il carattere di escape '\'' poiché l'apice singolo non è una referenza interna mentre lo sono \n \t etc.
    Si giustamente è corretta la tua ipotesi se devo validare ho bisogno solo della stringa corrispondente e non di un array.
    Ultima modifica di darbula; 29-08-2020 a 15:29

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 © 2020 vBulletin Solutions, Inc. All rights reserved.