Question

J'ai un groupe de $ _POST envoyées via une forme longue et au lieu de coder en dur chacun avec un mysql_escape_string() est-il ok pour moi de faire ce qui suit? Je ne sais pas si ce code est en fait sûr et / ou viable.

foreach ($_POST as &$post_item){
    $post_item = mysql_escape_string($post_item);
}

Je suis assez certain que parce que je suis avec le &, il est dans le passage par référence, pas de valeur, donc je suis réellement changer la valeur de $ _POST.

De plus, dois-je utiliser mysql_real_escape_string() à la place?

EDIT: Je suis en utilisant PDO et préparer () avec le procédé ci-dessus. Est-ce que prendre soin d'elle pour moi?

Était-ce utile?

La solution

Pourquoi ne pas utiliser array_map()?

array_map(mysql_real_escape_string, $_POST);

Mais en réalité, vous devez utiliser les états paramétrés / préparés.

mysql_real_escape_string() prend le caractère de base de données en cours mis en compte, mysql_escape_string() ne fonctionne pas. Ainsi, le premier est la meilleure alternative en comparaison.

Modifier (suite à l'édition de l'OP à la question):

Puisque vous faites déjà PDO préparé des déclarations, il n'y a pas besoin de modifier vos valeurs. PDO se charge de tout, c'est le point de l'ensemble de celui-ci ( Si vous avez vraiment mis toutes les données des paramètres, qui est - juste concaténation des chaînes pour construire des instructions SQL conduit à la catastrophe avec AOP ou sans). Échapper les valeurs serait au préalable conduire à des valeurs échappées dans la base de données.

Autres conseils

Oui, vous devriez utiliser mysql_real_escape_string(), si vous allez aller dans cette voie. Mais la bonne façon de vous assurer que les variables sont sans danger pour envoyer à la base de données en utilisant requêtes paramétrées qui sont fournis en PHP soit par les fonctions mysqli ou AOP .

En plus des commentaires précédents, un autre avantage à l'utilisation des requêtes paramétrées est que la base de données sera en mesure de faire mieux et probablement utiliser Optimisations un plan de requête mis en cache afin que vous obtiendrez de meilleures performances.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top