
Originariamente inviata da
boots
Per prima cosa, invece di usare n variabili, usa un array:
Codice PHP:
<?php
$error = array(); // o $error = []; se hai una versione di php recente
if(trim($nome) == ''){
$error[] = 'Campo non compilato';
}
if(strlen($nome) < 3){
$error[] = 'Il Campo deve contenere almeno 3 caratteri';
}
etc..
?>
<html>
<?php
if(!empty($error)){
echo '<center>';
echo implode('<br/>', $error);
echo '</center>';
}
?>
</html>
Per il preg_match, prova cos�:
Codice PHP:
if (!preg_match('/^[A-Za-z|������\'\s]+$/i', $nome)) {
$error[] = 'Il Campo contiene caratteri non ammessi';
}
Dovrebbe prenderti tutte le lettere (maiuscole o minuscole) + le accentale, apice e spazio
PS: il controllo dei strlen nel tuo codice (quello che hai postato) funziona (ovviamente ho assegnato una stringa a $nome 'a mano')
Boots, grazie <3 sei un tesoro!!!
funziona tutto perfettamente, tranne l'apostrofo nel preg_match! quindi per esempio, l'utente d'anna non riesce a registrarsi. � possibile secondo te fare in modo che un utente non scriva due o pi� apostrofi di seguito?
per chiarirmi, l'utente d'anna dell'amore deve potersi registrare (mica � colpa sua se ha due cognomi con l'apostrofo!!!
), l'utente ''''' non deve iscriversi...
con il preg_match che avevo usato io, se scrivevo ''''''' mi dava questo errore:
codice:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near... at line 1
specifico che invece il tuo preg_match non mi da questo errore, fortunatamente! pi� che altro non vorrei che il mio utente imbranato che scrive d''ambrosio (con due apostrofi) si trovasse spiazzato leggendo un'istruzione che non capisce.
ho provato cos�:
codice:
preg_match('/^[A-Za-z|������\s]+(\'){2}$/i'
ma non va, cercando in rete ho trovato:
http://stackoverflow.com/questions/7...-allow-a-z-and
codice:
<?php
$data = array(
// Valid
'Jim',
'John',
"O'Toole",
'one-two',
"Daniel'Blackmore",
// Invalid
' Jim',
'abc123',
'$@#$%@#$%&*(*&){}//;;',
);
foreach($data as $firstname){
if( preg_match("/[^a-zA-Z'-]+/",$firstname)){
echo 'Invalid: '. $firstname . PHP_EOL;
}else{
echo 'Valid: '. $firstname . PHP_EOL;
}
}... stampe:
Valid:Jim
Valid:John
Valid: O'Toole
Valid: one-two
Valid: Daniel'Blackmore
Invalid:Jim
Invalid: abc123
Invalid: $@#$%@#$%&*(*&){}//;;
quindi l'apostrofo non necessita di trattamenti speciali nelle regex. bene, anzi male, perch� l'utente che vuole spammare scriver� ''''' e si registrer� come tale! aiuto! sto sclerando e non ho il ciclo (quello while, intendevo :P )...