0

重複の可能性:
PHPによってすでに送信されているヘッダー

PHPのコーディングに問題があります。

add.php、lib.php、view.phpの3つのファイルがあります

簡単なフォームを作成しました。ユーザーが[送信]をクリックすると、データベースが表示されるview.phpに移動する必要があります。今、私は解決できないように見えるいくつかの問題を抱えています。

ユーザーが[送信]をクリックしてフィールドが空白であるかエラーが発生した場合、ビューページ(またはデータベース)にエントリを作成する必要はありません...ただし、[送信]をクリックすると、データベースに空白のエントリが作成されます。また、トップメニューバーをクリックするたびに[製品を入力]をクリックすると、データベースへのエントリが空白になります。なぜそれが起こっているのか理解できません。

次の問題はheader('Location')で、ブラウザに次のように表示されます。

「警告:ヘッダー情報を変更できません-16行目のadd.phpで(出力はlib.php:13で開始されました)によって既に送信されたヘッダー」

ただし、フォームで[送信]をクリックすると、フォームが消えます。

ページのコードは次のとおりです。

コードが本当に乱雑である場合は、本当にお詫び申し上げます。

どんな助け/アドバイス/解決策も大歓迎ですありがとう。

そして、はい、これ課題でした---先週の予定でしたが、私はそれを終えることができなかったので、それはもうマークの価値がありません。

4

2 に答える 2

1

ステートメントは常に失敗し、ifが実行されるため、空のdbエントリが実行されます。if (empty($_POST)){else

$_POST空のテキスト入力の場合でも、常に何かが含まれます。各キーは空の文字列に設定されます。

データを保存する必要があるかどうかをテストするには、必要なすべてのフォームフィールドを検証する必要があります。コードはおそらく次のようになります。これは決して完全または安全ではありませんが、正しい方向を示します。

<?php

// store validation rules for required fields
$requiredFields = array(...);

// Store all validation errors here.
$errors = array();

foreach($requiredFields as $key=>$rule) {
    if(empty($_POST[$key])) {
        $errors[$key] = true;
    }
    else {
        // you can perform more validation work on the value here.
    }
}

if(count($errors) > 0) {
    // form submit failure.
}
else {
    // form submit success, save to db
}
于 2012-06-22T03:12:21.153 に答える
0

ヘッダーを設定する前に出力を送信しているため、指定されたヘッダーは送信されません。

于 2012-06-22T03:01:01.820 に答える