2016-06-21 7 views
0

私はF12を押すと、私はインデックスが定義されていないのはなぜですか?

Line 18: Undefined index: task_uid 

を言うメッセージが表示され、警告を見てみると、私はちょうどここに、私はそれを宣言し、それを選択しなかったことを考えると、それは定義されていない理由を本当に理解していけない:

<?php 
     session_start(); 
     require ("../../../main/gerais/DBConn.php"); 
     $task_uid = $_GET['task_uid']; 
     $proj_id = $_GET['proj_id']; 
    ?> 

これは、コンソールに応じて、エラーと思われる「ライン18」の前に3行あります。ここにこの行があります:

 <?php 
      if(!empty($_POST['proj_id'])||($_POST['task_uid'])) 
       die("Invalid proj_id or task_uid."); 

      $query = " 
       SELECT pm.proj_id, pm.task_uid, etc etc etc... 

     ?> 

なぜそれは未定義ですか?この質問が文脈なしで答えることができるかどうかはわかりませんが、この「task_uid」がURLに表示され、実際のエラーではなく警告としてしか表示されないことを考慮すると、どれだけ問題になりますか?

+0

'task_uid'とは' GET'要求がない場合、エラーが返されるように思える... –

+1

あなたはせず、そこからREADそれが実際に存在するかどうかを今までチェックしているので、存在しないときに警告が表示されます。例えばスクリプトがそのクエリパラメータで呼び出されない場合は、警告が表示されます。 empty()は存在の有効なテストではありません。変数は存在することができ、同時に空にすることができる。 '$ foo = 0;空($ foo) 'はTRUEです。内容に関係なく、存在のチェックを行う 'isset()'を使う必要があります。 –

答えて

1

あなたは両方の変数に!emptyを使用する必要があります。

if(!empty($_POST['proj_id'])||!empty($_POST['task_uid'])) 
+0

うまくいきました、ありがとうございます。 – RazorFinger

+0

さらに、これが引き起こす最大の問題は何ですか?私が言ったように、警告として表示されたのは – RazorFinger

+0

スクリプトが実行されなくなることがあります。また、期待どおりに死ぬこともありません。 – aynber

関連する問題