2016-11-11 17 views
1

データベースに自分のデータを含めるPHPがあります。PHPで挿入クエリを防止する

私のページには複製できるdivがありますので、この情報を配列に送ります(データベースに挿入すると間違った種類の爆発を避けるために "#!@"を入れてしまいます)。

私の問題は、ユーザーが最初のdivコンテンツフィールドに何も挿入しないと、私は挿入を行わず、それでもやり続けることです。

if ($_GET['action_ent'] != "#[email protected]#[email protected]#[email protected]") 
    { 
    $myInputs = $_GET['action_ent']; 
    foreach ($myInputs as $eachInput) 
    { 

      $valores = $eachInput; 
      print_r($valores); 
      $dummy = explode('#[email protected]', $valores); 

      $acao = $dummy[0]; 
      $resp_acao = $dummy[1]; 
      $inic_plan_acao = $dummy[2]; 
      $fim_plan_acao = $dummy[3]; 


      $inicio_acc = explode("/", $inic_plan_acao); 
      $fim_acc = explode("/", $fim_plan_acao); 

      $inicio_action = $inicio_acc[2]."-".$inicio_acc[1]."-".$inicio_acc[0]; 
      $fim_action = $fim_acc[2]."-".$fim_acc[1]."-".$fim_acc[0]; 




       $result2 = mysql_query("INSERT INTO `demv3`.`entraves_action` (`action_id`, `ent_id`, `resp_ent`, `data_fim`,`action_desc`,`action_resp`,`action_comeco`,`action_fim`) VALUES ('0', '$ent_id', '$resp_ent', '$data_fim', '$acao', '$resp_acao', '$inicio_action', '$fim_action')"); 

    } 

    } 
    else 
    { 
     echo "NOTHING"; 
    } 
+0

あなたが入力にそれらを必要とする場合、入力は最初の入力の上のフォームから場所 'required'が来ている場合それ以外の場合は、最初の入力に対して$ _GETをチェックし、空であるかどうかを確認してください。 – Blinkydamo

+0

あなたのコードは '$ _GET ['action_ent']'の内容によってまったく異なります。それはあなたが完全にコントロールできないものです。まず、 'var_dump($ _ GET)'は何を示していますか? –

答えて

1

のforeach内の最初の項目をチェックしてみてください。

if ($_GET['action_ent'] != "#[email protected]#[email protected]#[email protected]") 
     { 
     $myInputs = $_GET['action_ent']; 
     foreach ($myInputs as $eachInput) 
     { 
       if(empty($eachInput)) { 
         echo 'NOTHING'; 
         break; 
       } 

       $valores = $eachInput; 
       print_r($valores); 
       $dummy = explode('#[email protected]', $valores); 

       $acao = $dummy[0]; 
       $resp_acao = $dummy[1]; 
       $inic_plan_acao = $dummy[2]; 
       $fim_plan_acao = $dummy[3]; 


       $inicio_acc = explode("/", $inic_plan_acao); 
       $fim_acc = explode("/", $fim_plan_acao); 

       $inicio_action = $inicio_acc[2]."-".$inicio_acc[1]."-".$inicio_acc[0]; 
       $fim_action = $fim_acc[2]."-".$fim_acc[1]."-".$fim_acc[0]; 




        $result2 = mysql_query("INSERT INTO `demv3`.`entraves_action` (`action_id`, `ent_id`, `resp_ent`, `data_fim`,`action_desc`,`action_resp`,`action_comeco`,`action_fim`) VALUES ('0', '$ent_id', '$resp_ent', '$data_fim', '$acao', '$resp_acao', '$inicio_action', '$fim_action')"); 

     } 

     } 
     else 
     { 
      echo "NOTHING"; 
     } 

ただ最初のもの以外に、他の入力が空の場合、それはループを切断されることに注意してください。あなたのロジックに大きな変化を避けるためにあなたがカウンターまたはブールフラグでこれを解決できます。

if(empty($eachInput) && $counter == 0) { 
    echo 'NOTHING'; 
    break; 
    } 
関連する問題