comment faire pour insérer un caractère spécial dans mysql via php et de les afficher sur la page html
comment insérer des caractères spéciaux dans une base de données(MySQL) comme
Registered symbol ( ® )
OU
Copyright sign ( © )
OU
Trade Mark sign ( ™ )
Aussi, je veux que l'affichage initial de la page html.
Ce que je dois faire dans les deux côté (front-end et back-end), veuillez préciser
Dont la fonction est plus efficace?
Méthode 1:
$_GET = array_map('trim', $_GET);
$_POST = array_map('trim', $_POST);
if(get_magic_quotes_gpc()){
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_GET = array_map('strip_tags', $_GET);
$_POST = array_map('strip_tags', $_POST);
}
else{
$_GET = array_map('mysql_real_escape_string', $_GET);
$_POST = array_map('mysql_real_escape_string', $_POST);
}
Méthode 2:
foreach ($_POST as $key=>$value){
if (!get_magic_quotes_gpc()) {
return addslashes(htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8'));
}
else {
return htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8');
}
}
Je suis un peu confus quelle est la différence entre
htmlentities()
et htlspecialchars()
, et qui-je utiliser?
laquelle la fonction doit être utilisée addslashes()
ou stripslashes()
lors de l'insertion dans la base de données?
OriginalL'auteur diEcho | 2010-01-23
Vous devez vous connecter pour publier un commentaire.
Simplement ajouter ces symboles pour votre texte, et de l'exécuter en tant que requête SQL:
Lorsque vous souhaitez afficher un le site web ne pas faire n'importe quoi avec ces symboles (mais n'oubliez pas d'échapper au moins
<
,>
,&
(à l'aide de htmlspecialchars()) cause ceux qui ont une signification spéciale dans le XML/SGML (HTML) documents)PS. Aussi n'oubliez pas d'échapper texte adopté à la requête SQL à l'aide de mysql_real_escape_string() pour éviter toute Injection SQL. Si votre serveur a
magic_quotes_gpc
activé désactiver ou au moins le filtre de votre GET/POST/COOKIE de données à sa valeur brute. Vous devriez toujours consciemment échapper valeurs.EDIT:
En fonction de votre commentaire... je ne me souviens pas si
magic_quotes_gpc
sont activés par défaut, mais vous pouvez facilement défait magic quotes effet. Juste sur le début de votre code PHP à ajouter quelque chose comme ceci:Maintenant chaque GPC valeur doit être toujours cru - sans guillemets - de sorte que vous avez à s'échapper manuellement avant de passer une variable dans la requête.
does php latest version add slash by default??
tout cela est de la foutaisedois-je utiliser
array_walk_recursive()
ouarray_walk()
GPC tableaux peuvent être multidimensionnelle, donc vous devez utiliser
array_walk_recursive()
.OriginalL'auteur Crozin
De la PHP docs pour
htmlentities()
:Ne vous inquiétez pas à propos de l'encodage des choses quand vous les stockez: stocker les données brutes, et puis l'encoder avec
htmlentities()
lorsque vous l'affichez dans votre code HTML.Edit: Aussi, lire cette.
OriginalL'auteur Mark Bell
Pour commencer, vous devez suffit d'utiliser mysql_real_escape_string lors de l'insertion dans la base de données - cela permettra de vous assurer que ce que vous stockez en toute sécurité est codé, mais conserve toutes les informations d'origine.
En termes de production, la différence essentielle entre htmlentities et htmlspecialchars, c'est que htmlentities vous permet de convertir tous les caractères qui ont des entités alors que htmlspecialchars convertir <, >, &, ", '
OriginalL'auteur John Parker