Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Login con file di testo

    Innanzi tutto ciao a tutti.
    Ho un problema con il login con l'utilizzo dei file di testo come avrete capito dal titolo.
    Tramite un modulo form trasferisco in una pagina PHP Username e password, dopo aver aperto i file di testo naturalmente devo verificare se user e pass sono presenti nel file di testo per cui inizializzo una variabile flag a 0 e faccio iniziare un ciclo for al cui interno è compreso un if che verifica se esiste o meno mandano la variabile flag a 1, qua inizia il problema... infatti sia che io inserisca i valori corretti che no è come se l'if non funzionasse e non riesco a capire il problema proprio perchè non mi sembra di sbagliare... di sotto vi posto la porzione di codice interessata, grazie in anticipo per l'aiuto

    $user=$_POST['user'];
    $pass=$_POST['pass'];

    $fp=fopen("cliente_pass.txt","r");//apertura file di testo user pass clienti

    $dati=file("cliente_pass.txt");//array dei clienti registrati
    $num_cli=count($dati);//numero dei clienti resigistrati

    flock($fp,2);//funzione che blocca il file in maniere che si possa scrivere senza accavallare i dati se 2 o più persone stanno usando il programma

    $trovato=0;//variabile che viene portata a 1 nel caso in cui sia user che password siano corretti e l'utente può accedere

    for($i=0;$i<$num_cli && $trovato==0;$i++)//verifica se l'utente può accedere
    {
    $stringa_div=explode("**",$dati[$i]);

    if($stringa_div[0]==$user && $stringa_div[1]==$pass)
    $trovato=1;
    }

    flock($fp,3);//sblocca permettendo a prossimi dati di essere iscritti nel file di testo

    fclose($fp);//chiusura del file di testo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova a inserire un paio di righe di debugging...

    Codice PHP:
    print_r($user);
    print_r($pass);
    for(
    $i=0;$i<$num_cli && $trovato==0;$i++)//verifica se l'utente può accedere
    {
    $stringa_div=explode("**",$dati[$i]);
    print_r($stringa_div);
    if(
    $stringa_div[0]==$user && $stringa_div[1]==$pass)
    $trovato=1;


  3. #3
    ho appena provato, il percorso dell'array a me pare giusto, non capisco perchè non vada...

    maccio capatonda Array ( [0] => maccio [1] => capatonda ) Array ( [0] => Gio98 [1] => 1 ) Array ( [0] => beppe [1] => 2 )

    bah mi sembra una roba strana, se conoscessi un altro metodo lo farei in modo diverso però non sono molto esperto per cui...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    aggiungi dopo print_r($stringa_div); anche print_r($stringa_div[0]==$user);print_r($stringa_div[1]==$pass);

  5. #5
    codice:
    maccio capatonda 
    
    Array ( [0] => maccio [1] => capatonda ) 
    1 
    Array ( [0] => Gio98 [1] => 1 ) 
    
    Array ( [0] => beppe [1] => 2 )

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sembra funzionare... perchè dici che non funziona? puoi aggiungere dove setti $trovato=1; "print_r($i);" per conferma

  7. #7
    macciocapatonda
    Array ( [0] => maccio [1] => capatonda )
    1

    0
    Array ( [0] => Gio98 [1] => 1 )


    1
    Array ( [0] => beppe [1] => 2 )


    2

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ci siamo un po' persi... togli tutti i print_r e cambia il blocco da $trovato=0 all'if con:

    Codice PHP:
    var_export($dati);
    $i=0$trovato=false;
    while (!
    $trovato && $i<$num_cli) {
      
    $stringa_div=explode("**",$dati[$i]);
      print 
    "Ciclo: $i"var_export($stringa_div);
      
    $check_user = ($stringa_div[0]==$user);
      
    $check_pass = ($stringa_div[1]==$pass);
      print 
    "Controllo: "var_export($check_user); var_export($check_pass);
      
    $trovato = ($check_user && $check_pass);
      
    $i++;
    }; 

  9. #9
    array ( 0 => 'maccio**capatonda ', 1 => 'Gio98**1 ', 2 => 'beppe**2 ', )

    Ciclo: 0
    array ( 0 => 'maccio', 1 => 'capatonda ', )
    Controllo:
    true
    false
    Ciclo: 1
    array ( 0 => 'Gio98', 1 => '1 ', )
    Controllo:
    false
    false
    Ciclo: 2
    array ( 0 => 'beppe', 1 => '2 ', )
    Controllo:
    false
    false

    direi che l'errore è nella password, ma come risolverlo?

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    nel file di testo si vede che ci sono degli spazi finali in più: devi toglierli... come è stato creato il file di testo?

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.