0

在我的数据库中,我有一些表,一个用于图像路径,一个用于图像宽度,它们的标准值是 NULL,还有一个空值(复选框和下拉框都是 NULL)当我输入新的路径或宽度不会改变,但我的另一个会改变,这是我的代码。

require_once("../Packages/Connection.php");

$text = mysql_real_escape_string($_POST["articleText"]);
$method = $_POST['method'];
$articleId = $_POST['articleId'];
$imagePath = $_POST['imagePath'];
$imageWidth = $_POST['imageWidth'];

if($method == "update")
{
    mysql_query("UPDATE Articles SET text='$text' WHERE id='$articleId'") or die(mysql_error());
}
elseif($method == "delete")
{
    mysql_query("DELETE FROM Articles WHERE id=".$articleId."");
};

if($_POST["articleGroup"]=="News")
{
    mysql_query("INSERT INTO Articles VALUES(NULL,'".$_POST["articleGroup"]."','".time()."','".$text."', NULL, NULL, NULL)") or die(mysql_error());
}
else
{
    mysql_query("INSERT INTO Articles VALUES (NULL,'".$_POST["articleGroup"]."','NULL','".$text."','NULL','".$imagePath."','".$imageWidth."')") or die(mysql_error());  
}

提前致谢

4

2 回答 2

1

其他两个字段没有更新。

UPDATE Articles SET text='$text' WHERE id='$articleId'

应该包括更新(添加到 SET 子句)其他字段。

正如其他人所说,您也应该清理其他字段(并且可能从已弃用的扩展中移出 - 如有必要更新 PHP),否则您所做的任何清理都是毫无意义的,因为被攻击者可以使用其他字段

于 2012-10-16T22:17:19.553 回答
0

您需要将其他两个属性添加到更新命令中。了解您的 mysql 表架构会很有帮助,但猜测列名,我得到:

mysql_query("UPDATE Articles SET text='".$text."', width='".$imageWidth."', path='".$imageWidth."' WHERE id='".$articleId."'");

此外,正如评论者指出的那样,您确实需要清理您的输入值。任何 REQUEST 变量都需要检查/清理。您可以在此处阅读有关此内容的更多信息

于 2012-10-16T22:20:03.403 回答