Confusion des délimiteurs d'attributs de valeur avec des espaces dans les données d'entrée
Lors du remplissage de l'attribut de valeur d'un élément d'entrée HTML à l'aide de PHP, les espaces peuvent provoquer un comportement inattendu. Prenons l'exemple suivant :
<input type="text" name="username" <?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />
Si un utilisateur saisit « Jonathan » comme nom d'utilisateur, il s'affiche correctement. Cependant, s'ils saisissent « Big Ted », seul « Big » s'affiche après la soumission du formulaire.
Le problème réside dans la gestion des espaces dans l'attribut value. Sans délimiteurs appropriés, l'espace devient un séparateur d'attribut, ce qui entraîne le traitement du texte suivant comme des attributs supplémentaires.
Pour résoudre ce problème, l'attribut value doit être mis entre guillemets. L'utilisation de guillemets doubles garantit que les espaces sont inclus dans la valeur plutôt que de la diviser en attributs distincts :
<input value="<?php echo (isset($_POST['username'])) ? htmlspecialchars($_POST['username']) : ''; ?>" />
De plus, la fonction htmlspecialchars() doit être utilisée pour échapper à tout caractère spécial, y compris les guillemets, afin d'éviter les croisements. -Attaques de script de site (XSS).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!