【问题标题】:Getting an undefined index error [duplicate]获得未定义的索引错误[重复]
【发布时间】:2011-12-04 08:24:36
【问题描述】:

我的 php 非常“弱”,所以我遇到了麻烦 -

<?php

include_once "../scripts/connect_to_mysql.php";

$title = $_POST['title'];
$desc = $_POST['description'];

$query = mysql_query("UPDATE images SET title='$title', description='$desc'") or die (mysql_error());

echo 'Operation Completed Successfully! <br /><br /><a href="index.php">Click Here</a>';
exit();
?>

第9行的未定义索引错误是description,即$desc = $_POST['description'];,并且数据库中的“描述”拼写也正确。

【问题讨论】:

  • 它与数据库字段名称无关..您是否有一个将数据发送到此脚本的表单,使用 post 作为请求方法和“描述”作为字段之一?跨度>
  • 数据库?! $_POST 是关于 POST 值,而不是数据库。而且您有一个 SQL 注入漏洞,在您据称签出的其他帖子中的 每一个 上的 cmets/answers 都会告诉您。
  • 这不在线,也永远不会在线,所以我不必担心注射。我仍在学习,但这有助于我了解我在做什么。我发现这个网站上有些人非常居高临下!”
  • @Aasim:直接,也许,偶尔对某些事情不耐烦。仅仅因为我们不用表情符号来回应我们的回应并不意味着我们不是好人!毕竟,我们免费为您服务。
  • -1 对于“这不在线,也永远不会在线”,50% 的欺诈发生在组织内部人员身上。 SQL 注入对于 Intranet 和对于 Internet 一样都是一个问题。而且,如果你知道这个问题,只需要输入$title = mysql_real_escape_string($_POST['title']);,这与看不起人无关。

标签: php mysql undefined-index


【解决方案1】:

尝试做:

if(isset($_POST['description'])){echo "yes";}else{echo "no";}

这不会解决它,但它会帮助确定 $_POST['description'] 是否存在。另外,$_POST['description'] 的来源是什么,它是在../scripts/connect_to_mysql.php 中设置的吗?怎么样?

除非执行更复杂的任务(即 AJAX),POST 变量通常是通过提交表单来设置的——您的代码是在表单提交之后加载页面之后出现的吗?如果没有,您可能错误地使用了 _POST 变量...

如果$_POST['description'] 设置在../scripts/connect_to_mysql.php 的代码中的某个位置,并且通过包含您希望检索其值的文件-您可能做错了-您能否提供有关$_POST['description'] 来源的信息?

【讨论】:

  • 答案是否定的,但我想我已经解决了 - 请参阅下面的评论!
  • 为什么包含的脚本会在$_POST 中设置任何内容?它当然不应该。 $_POST 是一个包含 HTTP POST 数据的自动超全局变量。
  • @Tomalak,这就是我在上面写的。正如你所说,你不应该。
  • 正如答案最后一段中明确指出的那样......'你可能做错了'
  • 但是你的回答确实帮助我理解了我的错误
【解决方案2】:

您的表单需要将此信息发送到 php 文件。您的表单中似乎只有title 而不是description。您应该发布您的表单以获得更好的帮助。

<form ...>
  <input type="text" name="description" value="">
  <input type="text" name="title" value="">
</form>

您应该始终转义您在 SQL 查询中使用的数据。

【讨论】:

  • 我想你可能有,现在只是测试一下,应该是描述的部分是标题,复制和粘贴......我想我需要更多的咖啡!
【解决方案3】:

显然,$_POST 数组中不存在 description 字段,因此索引 description 不指向任何内容。

var_dump($_POST); 打印什么?

另外,这是一个内部系统吗?如果没有,您应该阅读 SQL 注入。

【讨论】:

  • 感谢您的回复 - 但我想我刚刚犯了一个愚蠢的错误 - 描述没有通过,因为表单没有设置为描述,而不是标题 - 只是一个复制和粘贴错误!
【解决方案4】:

$_POST 数组中没有索引为 description 的元素。

在该行之前尝试var_dump($_POST); 以检查数组。 (或者,如果某些信息被剪切,使用print_r($_POST);

【讨论】:

  • 谢谢,但我发现了错误!
猜你喜欢
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多