bugfix> php > 投稿

こんにちはGuysがindex.phpに変更しない間違いページを見つけようとしています。

ランディングページにリダイレクトしないと、他のすべてが正常に機能します。

レコードはdbから削除され、削除のあるページはyes/noでもOK

   <?php
    // Process delete operation after confirmation
    if(isset($_POST["ID"]) && !empty($_POST["ID"])){
        // Include config file
        require_once 'config.php';
        // Prepare a select statement
        $sql = "DELETE FROM cv WHERE ID = ?";
        if($stmt = mysqli_prepare($link,$sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "i", $param_ID);
            // Set parameters
            $param_ID = trim($_POST["ID"]);
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Records deleted successfully. Redirect to landing page
                header('Location:index.php');
               exit;

            }else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }
        // Close statement
        mysqli_stmt_close($stmt);
        // Close connection
        mysqli_close($link);
    } else{
        // Check existence of ID parameter
        if(empty(trim($_GET["ID"]))){
            // URL doesn't contain ID parameter. Redirect to error page
            header("location: error.php");
            exit();
        }
    }
   ?>

どんな助けも素晴らしいでしょう。

警告:ヘッダー情報を変更できません-26行目の/storage/public_html/crudbd/delete.phpの(/storage/public_html/crudbd/config.php:31で出力が開始された)によって既に送信されたヘッダー

回答 1 件
  • エコーするとすぐに何でも、HTTPヘッダーが送信されるため、これ以上送信できなくなり、リダイレクトヘッダーがFAILになります。

    config.phpのechoステートメントを確認し、display_errorsをオフにし、error_reportingを-1に設定し、ターミナルでログを追跡して、エラーログが原因でPHPが早期に出力されないようにします。

    UPDATE

    エラーを貼り付けました。 Warning: Cannot modify header information - headers already sent by (output started at /storage/public_html/crudbd/config.php:31) in /storage/public_html/crudbd/delete.php on line 26

    ですから、私が言ったように、config.phpに出力があると推測するのは正しかったのですが、エコーではありませんでした。

    display_errors をオンにすると  オフ、それは動作するはずです。通知または警告は引き続きログに表示されます。

    その行で何が起こっているかを調べます。最初に isset() でチェックしない未定義の変数がある場合  たとえば、ログ出力をトリガーできます。

あなたの答え