【解決方法】if 条件を使用してページをリダイレクトする


問題があり、それが何であるかわかりません 5セットのコードがあります 画像が設定されている場合、彼は私をindex.phpにリダイレクトしていますが、画像が設定されていない場合、彼は同じページにとどまっています 私が間違っていることはなぜですか画像が設定されていない場合、彼は私をindex.phpにリダイレクトしていません

私が試したこと:

<?php 
         if (isset($_REQUEST["save"])){
         if (($_REQUEST["status"]!=2)){
         if(!isset($_FILES['image'])){
$sql="UPDATE tickets SET openedby='$flname''WHERE   id ='$tid'";
             mysqli_query($dbc, $sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error($dbc), E_USER_ERROR);
       header("Location: ../index.php");
       exit();
              
             }
             }
             }
             if (isset($_REQUEST["save"])){
             if (($_REQUEST["status"]=2)){
             if(!isset($_FILES['image'])){
 $sql="UPDATE tickets SET calername='$calername'WHERE id ='$tid'";
          mysqli_query($dbc, $sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error($dbc), E_USER_ERROR);
          header("Location: ../index.php");
           exit();
              
            }
             }
             }
     
             if (isset($_REQUEST["save"])){
             if (($_REQUEST["status"]!=2)){
 $sql="UPDATE tickets SET openedby='$flname' WHERE id ='$tid'";
                       mysqli_query($dbc, $sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error($dbc), E_USER_ERROR);
                     
                 }
                 }
                 
             
                 if (isset($_REQUEST["save"])){
                 if (($_REQUEST["status"]=2)){
              $sql="UPDATE tickets SET calername='$calername'WHERE id ='$tid'";
               mysqli_query($dbc, $sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error($dbc), E_USER_ERROR);
                          
                 }
                 }
                 
              ?>
    
     
    
            <?php
                if (isset($_REQUEST["save"])){
              
              if(isset($_FILES['image'])){
              
         $query = "UPDATE tickets SET attachments='$ben' WHERE id ='$tid'";
                 mysqli_query($dbc,$query) or trigger_error("Query Failed! SQL: $query - Error: ".mysqli_error($dbc), E_USER_ERROR);
                      header("Location: ../index.php");
                      exit();
                      
                   }
              
                }
             
           ?>

解決策 2

問題は、ヘッダーが既に送信されていることです。 関連する空白もあります。それらを削除します。

この問題を解決するには、ヘッダーをバッファーに保存し、スクリプトの最後にバッファーを送信する必要があるため、ヘッダーをバッファーに保存するには、 php ob_start() 関数を使用してバッファをクリーンアップするには、 ob_end_flush() 関数。 以下のコード スニペットを参照してください。

<?php
ob_start(); //MUST be at the top of your page
?>
<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<p>Hello world</p>
<?php

header("Location:https://mysite.com"); //Will automatically load your index page
ob_end_flush();
?>
</body>
</html>

解決策 1

私はそれを書き直すことから始めます:あなたのすべての「ifブロック」は同じテストで始まるので、それを別のテストとして引き出します:

<?php 
if (isset($_REQUEST["save"])){
   ...
   }
else {
   ... do something else entirely ...
   }
?>

これで、テストが読みやすくなり始めました。「イメージ テスト」についても同じことを行います。

<?php 
if (isset($_REQUEST["save"])){
   if (!isset($_FILES['image'])){
      ... Do your status check ...
      }
   else {
      ... Do your other stuff ...
      }
   }
else {
   ... do something else entirely ...
   }
?>

繰り返しますが、コードをより明確にします。

それができたら、もう一度テストして、何が起こるか見てみましょう。
それでも問題が解決しない場合は、デバッガーを中断して、「現実世界」でコードがどのようなパスをたどるかを確認してください。

私たちはあなたのためにそれをすることはできません.あなたのコードがいつ何をすべきか、または条件がテストされている場合に変数が何をするべきかわかりません.データをまったく見ることができません!

コメント

タイトルとURLをコピーしました