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

    [database in txt] evitare registrazione di più utenti con identico nick

    Salve
    Vista l'ora del mattino e la nottata in bianco passata a leggere tutte e 64 le pagine del forum php, spero mi perdoniate eventuali castronerie
    Vengo subito al dunque:

    Attraverso una form di registrazione (registra.html), tramite variabile post invio i dati "nome", "matricola", "email" alla pagina "conferma.php".
    Da qui con fopen("utenti.txt","a+"); e seguenti fputs salvo le variabili nel file di testo utenti.txt. E fin qui tutto ok.

    Problema

    Se inserisco per più di una volta gli stessi dati nelle caselle della form, vengono salvati indiscriminatamente nel file txt.
    A rischio di avere più di un utente con lo stesso nick e la stessa email. Come posso fare per evitarlo?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    Ho bisogno di un piccolo aiutino...

    Sto cercando di inserire dei dati all'interno del database.
    Come programma uso dreamweaver.

    La stringa di inserimento è molto lunga, infatti ad un certo punto mi va a capo su una nuova linea.
    Cosi al momento del test non funziona!!!!
    Se non ricordo male bisogna usare del codice php prima di andare a capo.
    Ma non mi ricordo esattamente...Sapete aiutarmi?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    OPS

    Credevo di aver inserito un nuovo post......
    Chiedo scusa....

  4. #4
    file() mette in array l'intero file...
    poi fai un test con in_array()....se vero rifiuti l'inserimento altrimenti accetti e scrivi nel file il nuovo nick.
    www.bitmade.com Momentan ist richtig_Momentan ist gut_Nicht ist wirklich wichtig_Nach der Ebbe kommt die Flut_ _Am Strand des Lebens_ohne Grund,ohne Verstand_ist nichts vergebens_ich baue di traeume auf den Sand.

  5. #5
    uhm... provo a buttare giù un codice, ma le mie conoscenze di php sono più che rudimentali. Correggimi se sbaglio:

    codice:
    $apri = fopen ("utenti.txt","a+");
    
    //metto in array l'intero file
    $ceck_user = file('utenti.txt');
    
    //eseguo il test
    if(in_array($user, $email)){
    echo "User già esistente!";
    }
    else {
    fputs($apri, "$user");
    fputs($apri, "$email");
    fclose($apri);
    }
    Potrebbe andare?

  6. #6
    codice:
    $nick="scassa";
    //metto in array l'intero file
    $file_in_vet = file($filename);
    //eseguo il test 
    
    if(in_array($nick,$file_in_vet)){
    echo "User già esistente!";
    }
    else {
    
    $apri = fopen ($filename,"a+");
    fputs($apri, $nick);
    fputs($apri, "$nick\n");
    fclose($apri);
    echo "User accettato!";
    
    }
    ps:
    presupposto perchè il codice funzioni è che
    le voci, nel file, siano disposte separatamente ognuna su una riga.
    ...scusa se mi permetto ma..nn credi ti convenga usare un db?
    avresti sicuramente una gestione un controllo per nn parlare di sicurezza nettamente superiori!
    www.bitmade.com Momentan ist richtig_Momentan ist gut_Nicht ist wirklich wichtig_Nach der Ebbe kommt die Flut_ _Am Strand des Lebens_ohne Grund,ohne Verstand_ist nichts vergebens_ich baue di traeume auf den Sand.

  7. #7
    codice:
    <?php
    
    echo "<center>";
    echo "Esito Registrazione
    
    
    ";
    $errore= false;
    
    If((!$nome) || (!$email)) {
    $errore=true;
    echo "Non hai compilato tutti i campi <a href=\"registra.html\">torna indietro</a>";
    exit;
    }
    else{
    echo "La registrazione è avvenuta con successo";
    }
    
    $filename = “utenti.txt”;
    
    if (!$apri = fopen ($filename,"a+")) {
    $errore=true;
    echo "non posso aprire il file";
    }else{
    $apriw = fopen ($filename,"a+");
    
    $file_in_vet = file($filename);
     
    if(in_array($nick,$file_in_vet)){
    echo "User già esistente!";
    }
    else {
    
    $apriw = fopen ($filename,"a+");
    fputs($apriw, $nome."-");
    fputs($apriw, "$email\n");
    fclose($apriw);
    echo "User accettato!";
    }
    
    if($errore){
    echo"
     Reinserisci dati per favore
    ";
    }
    else{
    echo "
     <a href=\"login.php\">Esegui il login</a>";
    }
    ?>
    Grazie mille per le dritte, lo script non riesco ancora a farlo funzionare, sicuramente sto sbagliando qualcosa.
    Ho provato a postartelo tutto, così magari a te salta di più all'occhio un eventuale errore.
    Mi piacerebbe sicuramente creare un db vero e proprio, solo che le mie conoscenze di php sono veramente troppo scarse per andarmi ad avventurare con mysql e query di vario genere.
    A meno che il db non si possa fare in altra maniera

  8. #8
    prova questo:
    codice:
    <?php
    
    echo "<center>";
    echo "Esito Registrazione
    
    
    ";
    
    
    
    
    
    If((!$nome) || (!$email)) 
    	{
    	
    	echo "Non hai compilato tutti i campi <a href=\"registra.html\">torna indietro</a>";
    	exit;
    	}
    else
    	{
    		$file_in_vet=@file($filename);
    		$nome=$nome."\n";
    		if(@in_array($nome,$file_in_vet))
    			{
    			echo "User già esistente!";
    			exit;
    			}
    		else 
    			{
    				if (!$apri = @fopen ($filename,"a+")) 
    					{
    					
    					echo "non posso aprire il file";
    					exit;
    					}
    				else
    					{
    					$apriw = fopen ($filename,"a+");
    					fputs($apriw, "$nome$email\n\n");
    					
    					fclose($apriw);
    					}
    			}
    echo "La registrazione a nome di ".$nome." è avvenuta con successo";
    }
    
    ?>
    ...fammi sapere
    www.bitmade.com Momentan ist richtig_Momentan ist gut_Nicht ist wirklich wichtig_Nach der Ebbe kommt die Flut_ _Am Strand des Lebens_ohne Grund,ohne Verstand_ist nichts vergebens_ich baue di traeume auf den Sand.

  9. #9
    Grandeeeeeee...
    Lo script funziona a meraviglia.
    Inizialmente faceva un po' i capricci, poi ho pensato che forse era necessario definire la variabile $filename, cui ho dato valore ("utenti.txt") ed è filato tutto liscio.
    Grazie infinite

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.