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?
Répondre
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
Votre '\ w' autorisera les noms numériques. Aussi, voulez-vous dire "... quand * accepter * un nombre"? –
@Peter Boughton, merci – user187291
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'])
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
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. –
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. –
* tousse * devoirs? * toux * – DilbertDave
Pas du tout. Il est inutile. – Mchl
Cela ne ressemble-t-il pas à "Comment optimiser 'Bonjour tout le monde'"? –