PHP notice - index.php上的未定义索引

时间:2011-08-22 04:34:36

标签: php apache notice

我遇到的服务器通知似乎不会影响我的页面加载但是每次加载页面时都会在错误日志中创建一个新条目...该错误是: PHP注意:未定义的索引:第1行的C:\ File Location \ htdocs \ index.php中的东西

我不确定问题实际上是在第一行还是后续行,所以我包含了整个文件的修改版本。对我来说奇怪的是,在其他几个文件上有相同的代码行,并没有引起它们的问题。此外,该值被正确提取,一切都很好,我只是不知道要改变什么,以避免通知。

$thingvalue = $_REQUEST['thing'];

include("mdetect.php");

  $iphoneTierHomePage = 'mobilemain.php';
  $iphoneTierMobilePage = 'mobilepage.php?thing=' . $thingvalue;
  $genericMobileDeviceHomePage = 'mobilemain.php';
  $genericMobileDeviceMobilePage = 'mobilepage.php?thing=' . $thingvalue;
  $line1 = define('WP_USE_THEMES', true);
  $line2 = require('./wp-blog-header.php');
  $desktopPage == $line1 + $line2;

  $uagent_obj = new uagent_info();

  function AutoRedirectToProperHomePage()
  {
  global $thingvalue, $uagent_obj, $iphoneTierHomePage, $genericMobileDeviceHomePage, $iphoneTierMobilePage, $genericMobileDeviceMobilePage, $desktopPage;

  if ($thingvalue == ''){

      if ($uagent_obj->isTierIphone == $uagent_obj->true) 
      header ('Location: '.$iphoneTierHomePage);

      else if ($uagent_obj->DetectMobileQuick() == $uagent_obj->true) 
      header ('Location: '.$genericMobileDeviceHomePage);

      else
      header ('Location: '.$desktopHomePage);
    }
    if ($thingvalue != ''){
        if ($uagent_obj->isTierIphone == $uagent_obj->true) 
        header ('Location: '.$iphoneTierMobilePage);

        else if ($uagent_obj->DetectMobileQuick() == $uagent_obj->true) 
        header ('Location: '.$genericMobileDeviceMobilePage);

        else
        header ('Location: '.$desktopPage);
    }
  }

AutoRedirectToProperHomePage();

3 个答案:

答案 0 :(得分:4)

它指的是index.php中第一行的数组索引: 试试这个:

$thingvalue = empty($_REQUEST['thing']) ? '' : $_REQUEST['thing'];

答案 1 :(得分:1)

它试图引用thing超全局内的索引$_REQUEST。如果有人直接查看该页面并且未通过表单发布或在查询字符串中以?thing=foobar指示,则PHP将显示该通知。我建议不要使用$_REQUEST,因为它检查$_GET$_POST这不是非常安全/实用 - 然后检查它是否已设置,如果没有,则执行一些失败操作:

try
{
    if(!isset($_POST['thing']))
    {
        throw new Exception('No direct access. Please use our <a href="http://www.mysite.com/contact">Contact form</a>');
    }
    else
    {
        $thingvalue = $_POST['thing'];
    }
}
catch(Exception $e)
{
    echo $e->getMessage();
    exit();
}

答案 2 :(得分:0)

问题是你正试图在这里获得东西的价值 在检查值是否先存在之前$thingvalue = $_REQUEST['thing'];

先试试

if( !isset( $_REQUEST['thing']) )
{
  do something because its missing
}