Utiliser une variable $à l'intérieur d'une chaîne SQL?
Je voudrais être en mesure de choisir une catégorie à partir d'une liste déroulante et en fonction de la catégorie à laquelle il ajoutera à ce que la table SQL est-il égal avec.
<?php
$article = $_POST['article'];
$con = mysql_connect("******","******","*******");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("jstaltso_staltsoft", $con);
$sql="INSERT INTO $article (headline, content)
VALUES ('$_POST[headline]', '$_POST[content]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Content Added!";
echo "<br/>";
echo "<a href='articles.php'><- Back</a>";
mysql_close($con)
?>
Je veux que la variable $articles pour être à la place de l'endroit où vous le nom de la table.
$sql="INSERT INTO $article (headline, content)
VALUES ('$_POST[headline]', '$_POST[content]')";
Donc, tout ce que je choisis dans le menu déroulant, il va mettre à $articles.
- Belle SQL injection de trous que vous avez là.
- Yup, la variable se trouve dans la chaîne de requête, tout comme $_POST['quelque chose'] (à noter que vous avez oublié d'utiliser des apostrophes ou des guillemets pour l'index de votre réseau POSTE)... mais, quelle est la question? Aussi, à l'aide de $_POST c'est très dangereux, vous savez.
- Et alors, où est votre question?
- Ce n'est pas une erreur.Il fonctionne parfaitement
- Cool, où l'exécution de l'application? Ce sera le ciel von attaques par injection SQL. Serisously, lire sur les injections SQL.
- aucun ne fonctionne pas. regarde ma réponse
- N'est-ce pas le code du travail?aussi loin que je peux voir il n'y a pas d'erreur avec le $articles.vérifiez à nouveau toutes les autres parties,ou au moins nous dire votre sortie de courant.
- Ce n'est pas utilisée pour tout public, pas besoin de faire de commentaires.
- Les gens sont en le commentant pour vous aider à écrire du code sécurisé - son pour votre propre bénéfice et de la compréhension
- Bien sûr, mais ensuite, j'aurais demandé de l'aide à la sécurisation de mon code 🙂
Vous devez vous connecter pour publier un commentaire.
Essayer:
N'oubliez pas de désinfecter votre entrée! (mysql_real_escape_string, pour commencer)
Vous ne pouvez pas utiliser ce type de variables, de modifier le dernier code
$sql="INSERT INTO $article (headline, content)
VALUES ('" . $_POST['headline'] " . ', '" . $_POST['content'] . "')";
;
après chaque ligne? Ce ne la ligne 12 ressembler?$article = mysql_real_escape_string($article);
mais je ne sais pas si cela pourrait résoudre votre problème...Je sais que cette réponse ne sera pas trop utile pour vous maintenant, mais comme il est juste trop de mal avec ce code et qui approche, voici quelques conseils:
$article
valeur!if($article == 'foo' || $article == 'bar') {...}
"This is a ".$adjective." string"
et"This is a {$adjective} string"