Quote Originariamente inviata da boots Visualizza il messaggio
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 )...