2010-11-07 15 views
0

Comment optimiser le code PHP suivant? Et si je voulais tester, disons, 100 entrées - comment le ferais-je de la meilleure façon?Comment puis-je optimiser ce code?

+0

* tousse * devoirs? * toux * – DilbertDave

+0

Pas du tout. Il est inutile. – Mchl

+2

Cela ne ressemble-t-il pas à "Comment optimiser 'Bonjour tout le monde'"? –

Répondre

8

Je ne sais pas la vitesse, mais du point de vue du style, votre code peut être amélioré comme ceci (l'une des nombreuses manières possibles bien sûr).

function p($key) { 
    return isset($_POST[$key]) ? trim($_POST[$key]) : null; 
} 

$name = p('myName'); 
$age = intval(p('myAge')); 
$res = p('myRes'); 

$err = array(); 

if(!preg_match('~^\w{3,}+$~', $name)) 
    $err[] = "Please fill in your name!"; 

if($age < 3 || $age > 99) 
    $err[] = "Please enter a valid age"; 

if(!preg_match('~^\w{3,}+$~', $res)) 
    $err[] = "Please fill in your location!"; 

if($err) 
    echo implode("<br>", $err); 
else 
    echo "Hi $name! you are $age years old and live in $res? Nice to meet you!"; 

Notez les points importants

  • éviter un accès direct à superglobales comme $ _POST sur tout le code
  • utiliser des expressions régulières pour valider les chaînes
  • conversion entière de force en attendant un certain nombre
  • avoid exit()
  • utiliser l'interpolation de chaîne au lieu de concaténation
+1

Votre '\ w' autorisera les noms numériques. Aussi, voulez-vous dire "... quand * accepter * un nombre"? –

+0

@Peter Boughton, merci – user187291

1

bien .. En fait, vous devez ajouter chèque isset() avant d'utiliser l'un des $ _POST, et vous pouvez changer strlen($_POST['myAge'] < 1) (notez que vous avez votre ) à un mauvais endroit) à empty($_POST['myAge'])

1

Si vous cherchez à faire la validation du formulaire essayer cela http://docs.jquery.com/Plugins/validation#Validate_forms_like_you.27ve_never_been_validating_before.21 Il est côté client de sorte que vous voulez voulez toujours une sorte de validation côté serveur, mais cela fait toujours plus facile sur moi

+0

jQuery est peut-être la meilleure chose au monde, mais ** votre réponse n'a rien à voir avec la validation PHP ni l'optimisation du code affiché ** donc il ne devrait pas être posté ici comme réponse. –

+2

Je déteste toujours quand cela arrive. J'aime la communauté ici et je voulais commencer à contribuer, mais alors quelqu'un est un abruti complet pour moi. Je comprends que ma réponse n'est pas une réponse directe à sa question, mais elle fournit un autre outil qu'il pourrait utiliser pour l'aider. Mon commentaire peut l'aider à un moment de sa carrière de codage, même si cela ne l'aide pas à l'instant même. Votre commentaire me décourage juste de vouloir essayer d'aider les autres, et 100% ne fait rien pour aider le demandeur avec quoi que ce soit. –