- Home
- Categorie
- Coding e Sistemistica
- PHP
- Stampare dati su file txt: impedire l'inserimento multiplo
-
Ho corretto lo script come mi hai consigliato
Il problema però permane...
-
Allora proverei intanto se funziona con una sola riga ed un solo elemento così da testare il codice, poi vediamo se il problema è il passaggio della riga.
-
Ho provato a inserire la prima riga ma, se provo a inserire gli stessi dati, mi scrive anche la seconda riga...
Ho provato anche a eliminare l'"a capo" nel controllo (\n) ma non succede niente...
-
Prova allora ad esplodere la riga in modo da ottenere l'indirizzo email (fai un substring con -1 per togliere il segno di a capo) e poi confronti solo quello.
-
Ho risolto così: ho spostato gli stripslashes prima del controllo...grazie!
-
Ma se adesso volessi impedire l'inserimento multiplo del solo campo 'email'???
Lo SCRIPT sarebbe una cosa del tipo:[php]for ( $key = 0; $key < count($lines); $key++ ) {
if ( $lines[$key] == ($_POST['var1'] . " " . $_POST['var2'] . " - " . $_POST['var3'] . " - " . $_POST['var4'])) {
$found = 1;
}
elseif ( $lines[$key] == ($_POST['var4'])) {
$found = 2;
}
}[/php]Ma mi va in errore...
-
Ciao cybergiaggia, fai attenzione alle maiscole, è ricordato anche nel campo di risposta.
Dovresti esplodere $lines[$key] per ottenere la sola stringa dell'email e poi confrontare quella.
Come hai fatto tu confronti l'intera riga con la sola email.
Oppure potresti utilizzare un eregi() o, essendo deprecata come funzione, meglio stripos().
Utilizzando stripos($lines[$key], $_POST['var4']) se il risultato è diverso da false allora hai trovato una mail duplicata.
-
grazie!
pare che la cosa funzioni: l'inserimento della email già inserita non è consentito...
anche se adesso non funziona l'ipotesi 'found==1' ovvero mi permette l'inserimento multiplo di 'nome cognome - email'SCRIPT
[php]for ( $key = 0; $key < count($lines); $key++ ) {
if ( $lines[$key] == ($_POST['var1'] . " " . $_POST['var2'] . " - " . $_POST['var3'])) {
$found = 1;
}
elseif ( stripos($lines[$key], $_POST['var3'])) {
$found = 2;
}
}
[/php]REPLAY
[php] if ($found==1){
echo "<br><b>Attenzione!</b><br>Dati già inseriti.<br><br>";
}
if ($found==2){
echo "<br><b>Attenzione!</b><br>Email già utilizzata.<br><br>";
}
elseif ( $f = fopen($filelocation, "a+") ) {
fwrite($f, $_POST['var1'] . " " . $_POST['var2'] . " - " . $_POST['var3'] . "\n");
fclose($f);
echo "<div align="center">".$subscribecall."</div><br><br><br><br>";
}
[/php]
-
Dato che vuoi fare due diversi controlli, puoi utilizzare lo stesso sistema solo per nome e cognome.
[php] if ( stripos($lines[$key],($_POST['var1']." ".$_POST['var2']) )) {[/php]
-
Mmmh,
grazie Samyorn ma così impedirei a due o più omonimi di inserire i loro dati, ovvero a partire dal secondo di essi...
Ad esempio:
mario bianchi - mariobianchiATemail.it impedirebbe l'inserimento amario bianchi - bianchimarioATemail.it
-
Allora aggiungi a seguire anche l'indirizzo mail.
[php] if ( stripos($lines[$key],($_POST['var1']." ".$_POST['var2']." - ".$_POST['var3']) )) { [/php]</span>
-
Siiiiiiiiiiiiii, risolto!!!
Grazie!!!