PHP Avis: Tableau de conversion de chaîne de caractères d'Erreur
Eu connaissance de cette erreur pour un peu de temps et ne peuvent pas trouver de réponses concluantes sur la fixation. J'ai essayé de supprimer des citations de $key
en ligne 59, mais en vain.
if (!get_magic_quotes_gpc()) {
if (isset($_POST)) {
foreach ($_POST as $key => $value) {
$_POST['$key'] = trim(addslashes($value));
}
}
if (isset($_GET)) {
foreach ($_GET as $key => $value) {
$_GET[$key] = trim(addslashes($value));
}
}
}
LIGNE 59
$_POST['$key'] = trim(addslashes($value));
D'Erreur Sur L'Écran
Avis: Tableau de conversion de chaîne de caractères dans
C:\Inetpub\vhosts\domain.com\httpdocs\library\config.php sur
ligne 59
pas de $_POST['clé']?? , de toute façon ton post de la valeur est un tableau. C'est pourquoi vous obtenez l'erreur
donc, il suffit de renommer
Il ressemble à une très mauvaise pratique. Si vous avez besoin d'échapper les entrées de l'utilisateur (en Supposant que vous utilisez MySQL), merci de lire les instructions préparées
Tout est de ma faute (voir ce changement dans le coeur de PHP: svn.php.net/viewvc?view=revision&la révision=318288), mais pour une bonne raison: en octobre 2011, je suis tombé sur un très difficile à déboguer problème a été causé par un silence de conversion d'un tableau en une chaîne de caractères. Avant PHP 5.4, un tableau utilisé comme une chaîne de caractères a été silencieusement converties sous forme de "Tableau". Puisqu'il n'y a aucun moyen d'être alerté par une telle conversion silencieuse et le fait que c'est une opération destructrice qui n'a tout simplement pas de bon sens, j'ai décidé de résoudre ce problème en émettant un avis car cela ne doit jamais arriver à correctement écrits programme.
donc, il suffit de renommer
$value
à quelque chose d'autre?Il ressemble à une très mauvaise pratique. Si vous avez besoin d'échapper les entrées de l'utilisateur (en Supposant que vous utilisez MySQL), merci de lire les instructions préparées
Tout est de ma faute (voir ce changement dans le coeur de PHP: svn.php.net/viewvc?view=revision&la révision=318288), mais pour une bonne raison: en octobre 2011, je suis tombé sur un très difficile à déboguer problème a été causé par un silence de conversion d'un tableau en une chaîne de caractères. Avant PHP 5.4, un tableau utilisé comme une chaîne de caractères a été silencieusement converties sous forme de "Tableau". Puisqu'il n'y a aucun moyen d'être alerté par une telle conversion silencieuse et le fait que c'est une opération destructrice qui n'a tout simplement pas de bon sens, j'ai décidé de résoudre ce problème en émettant un avis car cela ne doit jamais arriver à correctement écrits programme.
OriginalL'auteur ngplayground | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Vérifier si il est tableau avant de vous l'attribuer
Créer un gestionnaire les deux cas, l'un étant la matrice et étant chaîne.
J'ai utilisé cette
$_POST[$key] = !is_array($value) ? trim(addslashes($value)) : $value;
Qui retourne la matrice dans le cas de ce tableau. Si cela correspond à votre besoin, puis devrait être ok.
OriginalL'auteur Starx
Selon PHP.net la fonction addslashes() prend un type Chaîne de caractères en paramètre. Vérifiez quel type de valeur$. Si c'est un tableau lui-même, puis addslashes() peut-être jeter l'erreur.
PS:
Vous devez utiliser $_POST[$key] au lieu de $_POST['$key'] si vous souhaitez utiliser la valeur de $clés comme l'indice de l' $_POST tableau.
OriginalL'auteur David 'the bald ginger'
Je pense que vous devez utiliser ce code
$_POST[$key] = $value;
au lieu d'utiliser ce$_POST['$key'] = trim(addslashes($value));
ou de vérifier si la valeur est dans la gamme ou pas
$key
, hein?Il devrait être
$_POST[$key] = $value;
j'ai édité ma réponse. Merci pour le tuyau !OriginalL'auteur vanurag
Ce faire:
Toutefois, cela pourrait encore échouer si l'un de vos paramètres sont multi-dimensions des tableaux. Comme mentionné dans les commentaires, la bonne solution est d'utiliser les requêtes préparées avec des paramètres, plutôt que de l'interpolation des chaînes en SQL.
OriginalL'auteur Barmar