Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我该如何摆脱“我该怎么做?”;注意:未定义索引";在PHP中?_Php - Fatal编程技术网

我该如何摆脱“我该怎么做?”;注意:未定义索引";在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

如何消除第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 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";