【问题标题】:Errors: PHP Notice: Undefined index错误:PHP 注意:未定义的索引
【发布时间】:2017-01-03 11:03:08
【问题描述】:

我在错误日志中有这个错误

mod_fcgid: stderr: PHP Notice: Undefined index: url in /var/www/vhosts/mysite.it/httpdocs/wp-content/themes/colormag-pro/js/sharrre/sharrre.php 上线

4 行受影响。

它们对我的网站有危险吗?我怎样才能准确地修复它们?

更新:sharre.php 中此代码的前 4 行出错

 $json['url'] = $_GET['url'];
  $url = urlencode($_GET['url']);
  $type = urlencode($_GET['type']);

  if(filter_var($_GET['url'], FILTER_VALIDATE_URL)){
    if($type == 'googlePlus'){  //source http://www.helmutgranda.com/2011/11/01/get-a-url-google-count-via-php/
      $contents = parse('https://plusone.google.com/u/0/_/+1/fastbutton?url=' . $url . '&count=true');

【问题讨论】:

  • 这通常意味着 PHP 无法访问数组索引中的项目,实际上根本没有定义。尝试查看 sharrre.php 文件中的行号,看看那里访问了哪些 $variables。
  • 对不起。刚刚添加了给出错误的代码行。你知道我应该做些什么来修复这些错误吗?
  • 请正确设置标签和标题!
  • 你假设 $_GET['url'] 没有先检查就设置好了。检查它是否使用empty() 设置。 $_GET['type'] 相同

标签: php


【解决方案1】:

还不错,很烦人。 “通知”是 PHP 可以继续执行但可能导致其他问题中断的东西,但另一方面可能根本不会导致任何问题。很多时候“通知”可以被忽略,并且通常在生产环境中被关闭。

就我个人而言,我讨厌在我的代码中看到“通知”,但这只是我自己。

$json['url']、$_GET['url'] 或两者都未设置,因此请检查两者并查看哪个未设置,从那里您将能够追溯到应该的设置变量并修复它。

使用 isset() 检查是否在您粘贴的代码的第一行之前设置了每个设置,以检查是否实际未设置任何一个。

【讨论】:

  • 非常感谢,但我不是 PHP 专家,所以,你能告诉我我应该编辑的确切代码以修复错误吗?
  • 没有看到你的整个代码库,我无法告诉你错误发生在哪里,但是你可以通过包围包含 $json['url'] 和 $_GET['url' 的代码来停止消息] 带有 if 语句 if (isset($json['url']) && isset($_GET['url']))... 但这可能最终会破坏更多,因此风险自负。
【解决方案2】:

这对您的网站本身没有危险。 GET 中的变量未设置(变量 $_GET['url'] 未设置)。如果您打算稍后在 PHP 脚本中使用它,您应该在之前的页面上设置它们。因此,有两个页面,第一个页面和您的 PHP 页面 - 第二个页面。

【讨论】:

  • 感谢您的回答,但是,我很无知@PHP。你能告诉我我应该编辑修复的确切代码吗?
  • 非常感谢!!所以我只需要编辑该代码的第一行?即使报告了 4 行错误,我是否应该保持其他行不变?
  • 这是同样的错误,但它也出现在我上面粘贴的代码的第 2 行、第 3 行和第 4 行。您向我建议了第一行的解决方案并且错误已修复,但对于其他 3 行它仍然出现
  • 还有什么可以代替第四行?这个: if(filter_var($_GET['url'], FILTER_VALIDATE_URL)){ 顺便说一句,我赞成答案,你能解释一下如何赞成 cmets?
  • 你太棒了,非常感谢。我不知道此站点中是否有联系人系统,但如果有,请添加我或给我您的邮件,如果您需要其他支持以帮助我解决我将在此站点中提出的其他问题。
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 2013-03-20
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
相关资源
最近更新 更多