Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58

    [php - txt] Confronto user univoco

    Ciao a tutti,
    ho un form nel quale dovranno inserire dei dati per registrarsi e poi ho il file al quale punto il form, cioè questo:

    Codice PHP:
    <?
    $username 
    $_POST["username"];
    $textfile fopen("utenti.txt""r");
    while ( 
    $rigafile fgets($textfile,1024) ) {
    $campiriga explode("|"$rigafile);

    if(
    $username <> $campiriga[0]) {
    echo 
    "Devi inserire una user differente, questa è già presente.

          Torna alla pagina di registrazione, clicca <a href=registrazione.php>qui</a>"
    ;

    } else {      
        
    $numrighe 0;
        
    $textfile fopen("db/utenti.txt""r");
        while ( 
    fgets($textfile,1024) ) {
         
    $numrighe $numrighe +1;
        }
        
    fclose($textfile)
        
        
    $textfile fopen("utenti.txt""a");
        
    $idriga $numrighe 1;
        
    $cuser $_POST["username"];
        
    $cpassword $_POST["password"];

        
    $cnome $_POST["nome"];
        
    $ccognome $_POST["cognome"];
        
    $cindirizzo $_POST["indirizzo"];
        
    $ccivico $_POST["civico"];
        
    $ccitta $_POST["citta"];
        
    $cprovincia $_POST["prov"];
        
    $ctelefono $_POST["telefono"];
        
    $ccellulare $_POST["cellulare"];
        
    $cemail $_POST["email"];

        
    $datiform="$cuser|$cpassword|$cnome|$ccognome|$cindirizzo|$ccivico|$ccitta|$cprovincia|$ctelefono|$ccellulare|$cemail|\n";
        
    fwrite($textfile$datiform);
        
    fclose($textfile);
        echo 
    "Registrazione effettuata con successo
    "
    ;
        echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login";
    }
    }
    fclose($textfile);
    Non funziona, dove sbaglio? Probabilmente c'è un errore di concetto ma non capisco dove.
    Se uso solo il codice all'interno dell'else funziona la registrazione con l'unico problema che permette di creare delle user uguali, ecco perchè avevo pensato di inserire un controllo con l'if.
    Attendo qualche anima pia che mi aiuti a capire dove sbaglio.
    Grazie anticipatamente,
    cicileu

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?
    $username 
    $_POST["username"];
    $textfile fopen("utenti.txt""r");
    while ( 
    $rigafile fgets($textfile,1024) ) {
    $campiriga explode("|"$rigafile);

    if(
    $username == $campiriga[0]) {
    echo 
    "Devi inserire una user differente, questa è già presente.

          Torna alla pagina di registrazione, clicca <a href=registrazione.php>qui</a>"
    ;

    die();
    } else {      
        
    $numrighe 0;
        
    $textfile fopen("db/utenti.txt""r");
        while ( 
    fgets($textfile,1024) ) {
        
    $numrighe $numrighe +1;
        }
        
    fclose($textfile)
        
        
    $textfile fopen("utenti.txt""a");
        
    $idriga $numrighe 1;
        
    $cuser $_POST["username"];
        
    $cpassword $_POST["password"];

        
    $cnome $_POST["nome"];
        
    $ccognome $_POST["cognome"];
        
    $cindirizzo $_POST["indirizzo"];
        
    $ccivico $_POST["civico"];
        
    $ccitta $_POST["citta"];
        
    $cprovincia $_POST["prov"];
        
    $ctelefono $_POST["telefono"];
        
    $ccellulare $_POST["cellulare"];
        
    $cemail $_POST["email"];

        
    $datiform="$cuser|$cpassword|$cnome|$ccognome|$cindirizzo|$ccivico|$ccitta|$cprovincia|$ctelefono|$ccellulare|$cemail|\n";
        
    fwrite($textfile$datiform);
        
    fclose($textfile);
        echo 
    "Registrazione effettuata con successo
    "
    ;
        echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login";
    }
    }
    fclose($textfile); 
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    grazie per la risposta celere,
    ma mi da questo errore:
    Parse error: parse error, unexpected T_VARIABLE in D:\webroot\www.danthea.it\login\mem_reg.php on line 41
    cioè:
    Codice PHP:
    $textfile fopen("utenti.txt""a"); 
    perchè?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Buona domenica a tutti.
    Nessuno sa dirmi che cosa succede?

  5. #5
    La Riga prima alla 41
    Codice PHP:
    fclose($textfile
    non ha il ; finale...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Grazie per la risposta, era una svista, ho corretto il ; che mancava.
    ora non mi da più quell'errore però lo script non funziona ugualmente, cioè:

    - non memorizza l'utente;
    - non mi stampa l'echo "Registrazione effettuata con successo
    ";ecc.

    Non capisco, se inserisco solo la parte contenuta nell'else cioè:

    Codice PHP:
    $numrighe 0
        
    $textfile fopen("db/utenti.txt""r"); 
        while ( 
    fgets($textfile,1024) ) { 
        
    $numrighe $numrighe +1
        } 
        
    fclose($textfile); 
         
        
    $textfile fopen("utenti.txt""a"); 
        
    $idriga $numrighe 1
        
    $cuser $_POST["username"]; 
        
    $cpassword $_POST["password"]; 

        
    $cnome $_POST["nome"]; 
        
    $ccognome $_POST["cognome"]; 
        
    $cindirizzo $_POST["indirizzo"]; 
        
    $ccivico $_POST["civico"]; 
        
    $ccitta $_POST["citta"]; 
        
    $cprovincia $_POST["prov"]; 
        
    $ctelefono $_POST["telefono"]; 
        
    $ccellulare $_POST["cellulare"]; 
        
    $cemail $_POST["email"]; 

        
    $datiform="$cuser|$cpassword|$cnome|$ccognome|$cindirizzo|$ccivico|$ccitta|$cprovincia|$ctelefono|$ccellulare|$cemail|\n"
        
    fwrite($textfile$datiform); 
        
    fclose($textfile); 
        echo 
    "Registrazione effettuata con successo
    "

        echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login"
    funziona, cioè mi inserisce l'utente senza problemi, ovviamnte senza il controllo sulla user, l'intoppo sta quando gli aggiungo if/else per farli fare il controllo se la user esiste.

    Aiutooooo

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    guarda.. ti ho cambiato la struttura del file, in questa maniera mi sembra piu leggibile e comprensibile... e dovrebbe funzionare

    Codice PHP:
    <?
    $username 
    $_POST["username"];

    $textfile=file("utenti.txt");
    $numrighe count($textfile)-1// qui ho il numero di righe  già presenti nel file

    $registered =;
    foreach (
    $textfile as $line)
      {
      list (
    $user,
            
    $password,
            
    $nome,
            
    $cognome,
            
    $indirizzo,
            
    $civico,
            
    $citta,
            
    $provincia,
            
    $telefono,
            
    $cellulare,
            
    $email) = explode ("|",$line);
      
      
      if (
    $user == trim($username)) 
        {
        
    $registered 1;
        break;
        }
      }


    if (
    $registered == 1)  // se è registrato
      
    {
      echo 
    "Devi inserire una user differente, questa è già presente.

          Torna alla pagina di registrazione, clicca <a href=registrazione.php>qui</a>"
    ;
      die();
      }
    else
      {
      
    $new_line=array();
      
    $idriga $numrighe;
      
      
    $new_line['user'] = $_POST["username"];
      
    $new_line['password'] = $_POST["password"];

      
    $new_line['nome'] = $_POST["nome"];
      
    $new_line['cognome'] = $_POST["cognome"];
      
    $new_line['indirizzo'] = $_POST["indirizzo"];
      
    $new_line['civico'] = $_POST["civico"];
      
    $new_line['citta'] = $_POST["citta"];
      
    $new_line['provincia'] = $_POST["prov"];
      
    $new_line['telefono'] = $_POST["telefono"];
      
    $new_line['cellulare'] = $_POST["cellulare"];
      
    $new_line['email'] = $_POST["email"];

      
    $datiform implode ("|",$new_line);
      
      
    $db_file fopen("utenti.txt""a+") or die ("impossibile scrivere sul db");
      
    fwrite($db_file$datiform);
      
    fclose($db_file);
      
      echo 
    "Registrazione effettuata con successo
    "
    ;
      echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login";
      }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Ciao dottwatson,
    grazie dello script, funziona, l'unica cosa che ora mi memorizza tutto su di una unica riga,
    avrei bisogno di aggiungere un a capo \n alla fine di ogni riga, altrimenti l'unica user che vede è quella relativa al primo utente registrato, prima aggiungevo \n alla fine di $datiform , ora come devo fare?

    Un'ultima cosa, potresti commentarmi il codice che mi hai postato in modo da comprenderlo meglio?

    Grazie ancora,
    cicileu

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Ciao a tutti,
    per qualcuno che può averne bisogno, ho risolto così, cambiando nome alla vecchia variabile $datiform ed aggiungendone un'altra con concatenato "\n".
    Grazie a tutti per i consigli e suggerimenti.
    A presto,
    cicileu

    Codice PHP:
    $datiform_ante implode ("|",$new_line);
    $datiform $datiform_ante."\n"

  10. #10
    modifica
    Codice PHP:

      $datiform 
    implode ("|",$new_line);
      
      
    $db_file fopen("utenti.txt""a+") or die ("impossibile scrivere sul db");
      
    fwrite($db_file$datiform);
      
    fclose($db_file);
      
      echo 
    "Registrazione effettuata con successo
    "
    ;
      echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login";
      }
    ?> 
    con questo :
    Codice PHP:

      $datiform 
    implode ("|",$new_line);
      
    $datiform2 $datiform."\n";

      
    $db_file fopen("utenti.txt""a+") or die ("impossibile scrivere sul db");
      
    fwrite($db_file$datiform2);
      
    fclose($db_file);
      
      echo 
    "Registrazione effettuata con successo
    "
    ;
      echo 
    "Clicca <a href=login.php>qui</a> per andare alla pagina di login";
      }
    ?> 
    ora dovrebbe aggiungerti il ritorno a capo, giusto per una curiosita mia, e anche perchè sto cercando una soluzione a un mio problema http://forum.html.it/forum/showthrea...readid=1164011
    se devi modificare (ad esempio il quito utente del file) un utente come fai ?
    Falc©NET
    __________________
    http://falco.ilbello.com - Il Mio Sito Personale
    http://bandalarga.ilbello.com - Monitoraggio Della Banda Larga Italiana

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