0

我遇到了一个服务器通知,它似乎不会影响我的页面的加载,但是每次加载页面时都会在错误日志中创建一个新条目......那个错误是:PHP Notice: Undefined index: thing在第 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();
4

3 回答 3

4

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

$thingvalue = empty($_REQUEST['thing']) ? '' : $_REQUEST['thing'];
于 2011-08-22T04:40:50.440 回答
1

它试图引用超全局thing内部的索引$_REQUEST。如果有人直接查看该页面并且不是通过表单发布或?thing=foobar在查询字符串中使用 a 指示,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();
}
于 2011-08-22T04:46:32.057 回答
0

问题是您在 $thingvalue = $_REQUEST['thing'];首先检查值是否存在之前尝试在此处获取事物的值。

先试试这个

if( !isset( $_REQUEST['thing']) )
{
  do something because its missing
}
于 2011-08-22T04:42:10.823 回答