-2

J'ai deux morceaux de code. Pouvez-vous s'il vous plaît me dire lequel est correct et plus sûr?Quel morceau de code est «meilleur»?

<input type="text" class="form-control contact__form-control" placeholder="Your Name *" id="name" value="<?php echo htmlspecialchars ($name); ?>"> 
<?php echo "<span class='text-danger'>$nameError</span>";?> 

ou

<input type="text" class="form-control contact__form-control" placeholder="Your Name *" id="name" value="<?php echo htmlspecialchars ($name); ?>"> 
<?php echo htmlspecialchars ("<span class='text- danger'>$nameError</span>");?> 

J'ai vu tout le monde à utiliser la 1ère mais j'ai lu que PHP lorsque vous quelque chose écho son bon d'ajouter htmlspecialchars pour des raisons de sécurité. Donc je me demande si le deuxième morceau de code est correct. la classe d'alerte bootstrap fonctionnera après les htmlspecialchars

+0

Avez-vous essayé d'exécuter les deux codes? –

+0

Jetez un oeil à la documentation PHP et voyez ce que htmlspecialchars fera. – patwoj98

+3

cela devrait être posté sur la révision de code –

Répondre

1

Lorsque vous avez besoin de sortie texte brut sur une page HTML, vous devez HTML-y échapper, sinon des balises HTML seront interprétées, bien, comme HTML.

Même si un texte n'est pas censé contenir des balises HTML, un nom d'utilisateur, s'il est saisi par l'utilisateur, il peut contenir des balises HTML dangereuses. Pour des raisons de sécurité, vous pouvez y échapper HTML en tous cas.

Mais n'échappez que le texte, n'échappez pas aux étiquettes qui l'entourent.

<span class='text-danger'><?php echo htmlspecialchars($nameError); ?></span> 

Vous pouvez également désinfecter l'entrée de l'utilisateur au début du script; par exemple. supprimer tous les caractères non alphanumériques d'un nom d'utilisateur. Ensuite, vous ne devrez plus échapper au HTML.

+0

Merci beaucoup. Donne du sens à ce que vous dites –

+0

Vous voulez également faire écho aux balises '' et '', donc ce devrait probablement être ' '', htmlspecialchars ($ nameError) , "";?> '. –

+0

umm ... pourquoi? J'ai déplacé la durée juste en dehors du fragment PHP. Mieux pour les formateurs etc. – rustyx