• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto in_array() processa apparentemente il dato ma poi non cambia nulla

MarcoGrazia

Nuovo utente
Autore del topic
25 Agosto 2015
23
0
Miglior risposta
0
Ciao, ho un problema!
In pratica sto costruendo un semplice form di iscrizione al quale vorrei che all'atto di iscriversi un utente non inserisca nomi come Admin, root, e altro...
Per fare questo, ho creato un array di parole che non possono essere registrate e volevo fare il parsing di quella inserita dall'utente, se era nell'array il programma genera un errore e non registra l'utente.
Un esempio:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Ma non va :-(
Inserendo in $valore una delle parole dell'array in_array() non la trova, ho provato anche a utilizzare array_search() con lo stesso risultato, qualcuno ha una soluzione semplice?
Io non ci sto capendo nulla :S
 
Ciao, ho un problema!
In pratica sto costruendo un semplice form di iscrizione al quale vorrei che all'atto di iscriversi un utente non inserisca nomi come Admin, root, e altro...
Per fare questo, ho creato un array di parole che non possono essere registrate e volevo fare il parsing di quella inserita dall'utente, se era nell'array il programma genera un errore e non registra l'utente.
Un esempio:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Ma non va :-(
Inserendo in $valore una delle parole dell'array in_array() non la trova, ho provato anche a utilizzare array_search() con lo stesso risultato, qualcuno ha una soluzione semplice?
Io non ci sto capendo nulla :S

Prova senza array, cosi:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Scusate, ho fatto una pirlata, ho risposto in un altro topic :bye: va be risolto di la, riposto qui.

Questo è uno spezzone di codice che valida la pagina:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Come vedi dopo l'$input c'è un var dump per la verifica di ciò che viene passato e il risultato è questo:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
Ovviamente i dati sono fittizzi.
le funzioni: trimvalue effettua un trimming sull'array post per eliminare in ogni valore spazi vuoti all'inizio e alla fine della frase, i vari verificaNome, email, stringa... restituiscono null o una stringa formatata se valida, genere non restituisce nulla perché non è obbligatorio, il risultato be lo vedi l'ho postato su.
Inserendo admin non doveva restituire Admin ma un errore, invece nulla.
Sto dicendo parolacce! O.o

PS: dato che aspettavo un risposta in un altro topic mi sono perso le vostre di risposte, qindi le commento qui:

@ptm cambia poco, in realtà non cambia nulla se non per il fatto che demando al php di scegliere quale risposta dare ( == o === ) ma alla fine non da il risultato richiesto.

@psimo e no non ci siamo, l'array serve a evitare quel casino di richiami di $_POST e mica son 4 numeri :emoji_smiley: saranno una decina, forse più e che faccio?
 
Nell'unico spezzone di codice l'unico problema che poteva sorgere era !==...non ho ben capito dove hai risolto il tuo problema, ma evidentemente non era intuibile dal codice iniziale
 
Nell'unico spezzone di codice l'unico problema che poteva sorgere era !==...non ho ben capito dove hai risolto il tuo problema, ma evidentemente non era intuibile dal codice iniziale
Ma io non l'ho risolto ancora.

- - - Aggiornato - - -

Sto facendo delle prove e funzionano, ad esempio ho appena provato questo semplice codice estrapolato dal programma di cui sopra:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
e anche
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
in cui la differenza è che lo metto a true e non alla negazione di false, be in tutt'e due i casi appare la scritta sono qui che è ciò che volevo ottenere, se invece input porta che so pippo, nulla appare. Quindi il problema è altrove.

Creo anche un semplice form.
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
E ancora funge benissimo, quindi il problema è altrove, lo studio e vi faccio sapere.

Probabilmente è un errore logico e quindi tento di riprodurlo.
Creo un messaggio di errore:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
E tutto funziona regolarmente... allora vado oltre e carico laprova di un altro balzello, ci metto un altro controllo, il campo vuoto! Implementando un ulteriore campo di errore.
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
E capisco dove sta l'errore! Nessuno di voi i è arrivato? Eppure è logico, voglio dire, è proprio un errore logico, seguitemi.
In pratica prina verifica che la stringa non sia vuota, se lo è mette l'errore!
Poi verifica che la stringa non sia nell'array e...
... e già, la striga vuota non è nell'array quindi toglie l'errore e passa il controllo :emoji_smiley:

Bene a questo punto mi basta mettere una stringa vuota nell'array e togliere un controllo, meno fatica per il processore.

E infatti l'ultima versione funziona ^^
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Non mi resta che implementare le modifiche nel file principale e sperare!

Funge! almeno per ora.
 
Ultima modifica:
Ci ho messo un po' a capire quello che hai scritto, comunque ripeto, non era capibile dallo spezzone iniziale; prima credevo avessi risolto in un altro topic dato che hai scritto questa frase
Scusate, ho fatto una pirlata, ho risposto in un altro topic va be risolto di la, riposto qui.
Comunque si, vedendo dal codice completo era sbagliata la logica di questi pezzi
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Di fatto in questo modo è sufficiente che un controllo sia soddisfatto per non far apparire errori.
Se mi confermi che hai risolto, cambio prefix alla discussione ;)
 
Ci ho messo un po' a capire quello che hai scritto, comunque ripeto, non era capibile dallo spezzone iniziale; prima credevo avessi risolto in un altro topic dato che hai scritto questa frase

Comunque si, vedendo dal codice completo era sbagliata la logica di questi pezzi
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Di fatto in questo modo è sufficiente che un controllo sia soddisfatto per non far apparire errori.
Se mi confermi che hai risolto, cambio prefix alla discussione ;)
Non proprio, quelli annullavano l'errore precedente ma non inficiavano il risultato di nu nuovo errore, comunque li ho tolti perché in ogni caso interrompevano e in qualche caso annullavano la catena degli errori, no la logica veniva inficiata proprio dal campo 'nome' vuoto che per la logica contenuta nell'array non è un errore in quanto non compariva in lista, ciò bloccava comunque l'errore dovuto ad un nome in lista.
A quel punto si potevano fare due cose: inverire la logica, ovvero prima fargli controllare se nome conteneva un nome errato e poi se fosse vuoto, in questo caso funzionava, ma, e qui arrivo al punto, perché fargli fare due volte lo stesso controllo? Meglio mettere nell'array un valore vuoto, così in un colpo ha controllato persino questo mettendolo nella catena degli errori.
Ora funziona e puoi anche mettere il post tra quelli risolti.
Grazie.