0

ページの読み込みに影響を与えていないように見えるサーバー通知に遭遇しましたが、それでもページが読み込まれるたびにエラーログに新しいエントリが作成されます...そのエラーは次のとおりです。PHP通知:未定義のインデックス: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、クエリ文字列にが含まれていない場合、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 に答える