Ciao, premetto che sono nuovo del forum e anche un neofita in PHP. Ho un problema con una funzione che verifica che ci sia l'input utente e che non contenga altri caratteri oltre a quelli alfanumerici, [spazio], [_] e [-] se questo accade restituisce FALSE atrimenti TRUE. Il mio dubbio nasce dal fatto che il tipo di dati boolean può essere 1 - ON - TRUE - YES oppure 0 - OFF - FALSE - NO. In teoria dovrebbero essere equivalenti quindi è possibile utilizzare uno o un'altro indistintamente. Ma provando un esempio preso da un libro la funzione restituisce sempre TRUE se utilizzo TRUE (come indicato sul libro) invece funziona correttamente se uilizzo 1 (provato da me); ma in teoria se non ho capito male 1 = TRUE = ON = YES). Ecco le due funzioni:
Codice PHP:
// QUESTA FUNZIONE FUNZIONA CORRETTAMENTE
public function verificaNomeUtente($nome_utente)
{
if ($nome_utente == '' or ereg('[^[:alnum:] _-]', $nome_utente) === 1)
return FALSE;
else
return TRUE;
}
// QUESTA FUNZIONE RESTITUISCE SEMPRE TRUE
public function verificaNomeUtente($nome_utente)
{
if ($nome_utente == '' or ereg('[^[:alnum:] _-]', $nome_utente) === TRUE)
return FALSE;
else
return TRUE;
}
Ma se cambio l'operatre [===] con [==] nella seconda funzione sembra funzionare correttamente. Eccola:
Codice PHP:
// QUESTA FUNZIONE SEMBRA FUNZIONARE CORRETTAMENTE
public function verificaNomeUtente($nome_utente)
{
if ($nome_utente == '' or ereg('[^[:alnum:] _-]', $nome_utente) == TRUE)
return FALSE;
else
return TRUE;
}
So che [==] è l'operatore di Uguaglianza e restituisce TRUE se i due operandi hanno lo stesso valore; mentre [===] è l'operatore di Identità e restituisce TRUE se oltre ad avere lo stesso valore sono dello stesso tipo.
Ma il tipo di dato non è sempre boolean?
Ho provato inoltre a non inserire nulla nel form e solo così sembra funzionare correttamente tutto, anche la seconda funzione che restituisce sempre TRUE, quindi quello che non funziona è cosa restituisce [ereg]?
Mi sembra una cosa banale, mi sto perdendo in un bicchiere d'acqua.
Grazie in anticipo