2010-03-25 6 views
0

Est-il nécessaire de valider un nom ou une adresse? quand je l'ai codé dans le format suivant. Et si oui, pourquoi?Question de validation de formulaire PHP?

$address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address'])); 
$name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name'])); 
+0

valider = échapper –

Répondre

1
  1. Ne pas stocker les valeurs filtrées par htmlspecialchars/htmlentities/etc dans votre base de données - le faire directement avant l'affichage en HTML/XML/documents etc.
  2. Si vous êtes OK avec des noms tels que blah blah <>DAS#^^[email protected]@vm/.,czc, ce code semble correct.
1

Combien de noms ou d'adresses connaissez-vous qui contiennent «$» ou «%»? Il existe des vérifications simples que vous pouvez effectuer pour vérifier si les utilisateurs sont stupides. Habituellement, un nom ne contiendra que des caractères (et parfois une virgule et une période s'ils sont Jr, Sr, etc.) et une adresse ne contiendra que des caractères alphanumériques (à moins qu'ils ne soient abrégés, auquel cas un point peut être inclus). Ce n'est pas nécessaire, mais personnellement, je mettrais des chèques afin que vous ne finissiez pas avec des utilisateurs qui entrent juste BS au hasard juste pour être drôle (c'est une de mes bêtes noires, désolé).

0

Vous semblez un peu mêlé là-bas parce que vous avez 2 moyens d'échapper à des données et aucun de filtrage lorsque la règle est FIEO filtre de sortie d'échappement d'entrée

Filtrage:

si vous décidez qu'un « nom » ne peut être que des lettres majuscules et minuscules, entre 2 et 50 caractères et peut contenir des tirets et des guillemets simples (') alors vous devriez:

supprimer tout ce qui ne correspond pas à votre propre exemple de définition ci-dessus (en utilisant peut-être des expressions régulières) OU abandonner l'opération

Selon le type que vous voulez être à votre cracker utilisateur/potentiel

filter_var() est également très utile dans ce scénario.

Échapper

Vous échappez les données en préparation pour l'environnement suivant les données se dirige vers;

Si c'est pour aller dans une base de données alors vous utiliseriez votre mysqli_real_escape_string(), si vous faites écho à l'écran en html puis utilisez htmlentities() et ainsi de suite.

HTH