我该如何摆脱“我该怎么做?”;注意:未定义索引";在PHP中?
如何消除第31行错误中的“注意:未定义索引:C:\xampp\htdocs\cpages\cmain\userfooter.php中的颜色”我该如何摆脱“我该怎么做?”;注意:未定义索引";在PHP中?,php,Php,如何消除第31行错误中的“注意:未定义索引:C:\xampp\htdocs\cpages\cmain\userfooter.php中的颜色” 发布“未定义索引”通知是因为在$\u POST中没有颜色键。这是因为未从上一页传递color。您可以在尝试访问密钥之前检测密钥是否存在: if(array_key_exists("color", $_POST)) { $color = $_POST["color"]; }else{ $color = "red"; // no color
发布“未定义索引”通知是因为在
$\u POST
中没有颜色
键。这是因为未从上一页传递color
。您可以在尝试访问密钥之前检测密钥是否存在:
if(array_key_exists("color", $_POST)) {
$color = $_POST["color"];
}else{
$color = "red"; // no color given; default to red
}
您还应该知道,您的代码包含明显的漏洞。在将其插入查询之前,可以通过转义$color
来解决此问题:
mysql_query("UPDATE theme SET color = '" . mysql_real_escape_string($color) . "' WHERE username='plmexico'");
您还可以通过使用准备好的语句来修复它。首先,您应该确保在将数据插入SQL查询之前清理数据。你的代码是。最简单的方法是使用。另一种方法是发送您已经定义的颜色id。通过这种方式,您可以100%确保插入到SQL查询中的值是“安全的” 发生错误的原因是未将参数
color
发送到服务器
您可以在发送数据之前验证数据(例如使用Javascript),也可以在服务器上验证数据。您可以使用该函数测试参数是否存在。所以在你的情况下——
if (!isset($_POST['color'])){
// return an error here! The color paramter was not sent!
}
参考-
-
“通知”是一个错误。它的消息“undefined index”表示您正试图在不存在的键处访问数组的值。在访问该值之前,应该检查该值是否已设置(如果未设置,则可以选择将其设置为默认值,如黑色)
另外,请注意,mysql数据库函数正在被弃用,不再更新。您应该改为使用mysqli或PDO进行数据库交互
此外,您的代码在其当前状态下极易受到SQL注入的攻击。您应该使用
mysql\u real\u escape\u string
(或者如果您选择升级到其中一个API,则使用其mysqli/PDO等价物)来阻止它们。您应该知道,存在明显的漏洞。。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。我已经将表单分离到另一个页面这里的表单
@Pablo:如果我理解正确,您是说您将表单移动到了与处理输入的页面分离的页面。如果是这样,您需要将表单的action
属性设置为处理输入的页面。是的,我已经修复了我忘记提到的问题,我只是将所有内容都放在一个页面中,而且我想知道,因为在表单的无文本框中,我真的还需要添加mysql\u real\u escape\u字符串。@Pablo:是的,因为人们可以在不使用您的表单的情况下将内容提交到您的页面。您的表单不起作用,但感谢您的帮助help@pab-对:P我在if语句中缺少了一个紧括号。我已经知道了,但无论如何还是要感谢:)你能用stackover flow添加朋友吗?@pab-不,这里没有这样的东西。
if (!isset($_POST['color'])){
// return an error here! The color paramter was not sent!
}
$color = isset($_POST['color']) ? $_POST['color'] : "#000000";