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

    Leggere una porzione di una stringa in un file di testo

    Ciao a tutti, sono ai primi passi con il PHP. Abbiamo introdotto l'argomento a scuola il mese scorso e settimana scorsa abbiamo creato un form di registrazione in PHP che registra il nickname, l'email e la password dell'utente su un normale file di testo.

    Ho registrato i dati in questo modo:

    nickname;email;password
    nickname;email;password
    nickname;email;password

    Ovvero una riga per utente, utilizzando ";" come separatore.

    Mi è stato chiesto di rendere visualizzabile in una pagina web la lista degli utenti registrati e l'ho fatto usando un ciclo while e la funzione fgets. Il problema però è che viene letta la riga intera del file così con me.

    Cioè appare quindi: "nickname;email;password".

    Se volessi creare una tabella e suddividere i tre dati, dovrei essere in grado di estrapolare il nickname, l'email e la password e trattarli singolarmente. Ma come posso riuscirci?

    Mi è venuto in mente che potrei utilizzare la funzione strpos per capire quanto è lungo, per esempio, il nickname, poichè posso far restituire alla funzione il numero di caratteri dall'inizio della stringa fino alla prima corrispondenza del carattere ";".
    Potrei poi utilizzare il numero per leggere con fgetc il nickname. Ma è tutto molto macchinoso e non sarei in grado di metterlo in pratica. E poi mi riuscirebbe al massimo solo col nickname, non con la password ecc.

    C'è qualche metodo per realizzare quello che voglio fare?

    Grazie mille in anticipo!

  2. #2
    Il manuale a proposito di fgets dice:
    If no length is specified, it will keep reading from the stream until it reaches the end of the line.
    Quindi ogni giro del ciclo while leggi una riga. Considerato che i dati sono separati da un ; puoi usare la funzione explode

    explode

    qualcosa tipo

    Codice PHP:
    $dati explode(';'$riga); 
    a quel punto puoi accedere ai dati della riga come un array ovvero

    Codice PHP:
    $nickname $dati[0];
    $mail $dati[1];
    $password $dati[2]; 
    e stamparli a piacimento in una tabella

    Disegnatori e romanzieri d'Italia, visitate il mio sito, cerchiamo favolieri dark ed illustratori dark fantasy... http://www.neilgaimania.it

  3. #3
    Grazie! Però come faccio a inserirla all'interno del mio codice? Ho fatto un po' di tentativi ma mi va in palla tutto. Questo è il mio codice:

    Codice PHP:

    $admpw
    =$_REQUEST['adminpass'];
    $file=fopen("../files/utenti.dat","r");

    if (
    $admpw!="accesso")
        echo 
    "<h2>Errore!</h2>

    La password che hai inserito non è corretta. Se non conosci la password è perchè non puoi accedere a quest'area.</p>"
    ;
    else
        echo 
    "<h2>Pannello di amministrazione</h2>

    Benvenuto Amministratore! Questo è il tuo [b]Pannello di Amministrazione[/b].</p><hr>[b]Elenco utenti registrati[/b]:<hr>"
    ;
        while (!
    feof($file))    // si deve fermare alla fine del file per non generare errori
        
    {
        echo 
    fgets($file)."
    "
    ;    // dopo aver letto una linea il   cursore si sposta alla linea seguente
        
    }
        
    fclose($file); 

  4. #4
    copio e modifico l'esempio del manuale:
    Codice PHP:
    $handle = @fopen("/tmp/inputfile.txt""r"); 
    if (
    $handle) {     
    while ((
    $buffer fgets($handle4096)) !== false) {         

    $row explode(';'$buffer);

    echo 
    'username='.$row[0]; // e così via, ovviamente puoi formattarlo come ti pare     
    }     
    if (!
    feof($handle)) {         
    echo 
    "Error: unexpected fgets() fail\n";     
    }     
    fclose($handle); } 
    Disegnatori e romanzieri d'Italia, visitate il mio sito, cerchiamo favolieri dark ed illustratori dark fantasy... http://www.neilgaimania.it

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.