2012-02-07 21 views
0

これは送信ボタンのコードです。データがmysqlに提出されたら、それをpage.htmlにリダイレクトします。送信ボタンをクリックした後にフォームのヘッダー(場所)が機能しない

<form name="gender."; action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" > 

私は自分のフォームページの最上部に

 <?php 
     header("location:page.html");  
    exit; } 
<? 

を追加しました。しかし、送信ボタンをクリックした後に読み込むのではなく、page.htmlを読み込むだけです。

+0

また、フォームタグのセミコロンはどうですか? –

+0

申し訳ありませんがタイプしました – Jacob

答えて

1

1)PHP_SELFを使用しないでください。悪用される可能性があります。アクションを同じページにする場合は、空のままにしてください。

2)header()は、動作してからページの先頭にあると仮定していますが、それについては何も制御していません。

EDIT1:下記のコメントに基づいて拡張します。

3)header()ディレクティブは、ブラウザを新しいページに転送し、それ以上の処理を停止します。このため、リダイレクトする前にすべてのMySQL処理を完了する必要があります。

4)$_POST配列は、ので、あなたの<input type="submit" name="submitbtn" ...$_POST['submitbtn']

<?php 
if(isset($_POST['submit'])){ 
    // MySQL stuff goes here 
    header("Location: page.html"); 
    exit; 
} 
?> 
+0

私は

....スクリプトをページ上部に空白を入れずに追加しました。結果:フォームがロードされたページが送信されたときに、それはmysqlに送信されず、page.htmlにも送られませんでした。 : – Jacob

+0

の場合、投稿データで何をしているのか正確に表示する必要があります。あなたのPHPの処理の内容全体をあなたの質問を更新できますか? –

+0

フォームタグに ';'があるのはなぜですか?または、name属性の '.'は?それにもかかわらず、MySQLのものは正しく処理されるようにするには、 'if(isset(...'と 'header()'の間を移動する必要があります。 'やそれに類するものです。重要な部分はキー名として '$ _POST'に送られる' name = "submit"です。 – Grexis

0

あなたはヘッダがいるかどうかを確認する前に条件を追加する必要があります一致することを確認してください、入力のname属性からキー名を取得しますデータが提出されたかどうか。 例えば:あなたが提出するためのフォームを使用したい場合は

if(isset($_POST['btnname']) 
{header("location:page.html"); 
exit; // this is unnecessary 
} 

また、あなたはpage.phpに投稿する必要があります。 このコードは、フォームのデータをどこにも保存せずにページをリダイレクトします。

0

私の主な疑いは、あなたのPHPが警告とエラーを抑制するように設定されていることです。 php.iniファイルでそれらを有効にして、メッセージが何であるかを確認してください。

任意の出力がすでに存在する場合、それは

PHP聞く機能が動作しないことができる「...そうやので、ライン出力がすでにあるようなHTMLヘッダを送信できません」のようなラインに沿って何かを言うだろうほとんどの

ページからエコーされます。

0
<?php 
ob_start(); 
error_reporting(E_ALL & ~E_NOTICE); 

if(isset($_POST['button'])){ 

    header('Location:page.html'); 
    exit; 

} 



?> 

このようなコードを変更できますか?

関連する問題