1

シンプルなフォームのページがあります。[送信]ボタンをクリックすると、いくつかのSQLコードがあり、最後にページを別のページ(contact.php)にリダイレクトする必要があります.SQLコードは正常に機能しており、データベースに保存されますが、別のページにリダイレクトされません(index.phpに)フォーム(contact.php)を持つ同じページを表示します。次のコードを使用してページをリダイレクトします。

header('Location: index.php');

私のフォームとphpコードは以下の通りです:

  <form  name="contact" action="contact.php"  id="contact_form" method="post" >
 <input  type="hidden" id="ID" name="ID" value="<?php echo $yid ?>" />

 <textarea  id="Reason" name="Remark" placeholder="Write your Reason here" class="required" cols="10" rows="10"></textarea>


  <input class="button altbutton" type="submit" name="submit" value="submit" />

 </form>

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

       $Remark = @$_POST ['Remark'];
       $ID= @$_POST ['ID'];

$query=" my sql code";
$result = mysql_query($query);

header('Location: index.php');

}

私は何をすべきか、または私が逃したものは何ですか?ありがとうございました

4

5 に答える 5

1

ページの出力後に配置したことが原因だと思いますが、コードが表示されない場合、これは単なる暗闇の中での刺し傷です。

新しいページにリダイレクトするには、次を使用する必要があります。

header("Location: index.php");
exit();

また、上記がページ上の出力の前に配置されていることを確認してください。そうしないと、機能しません。

上記を実行して空のページが表示された場合は、何か問題が発生しています (エラー ログを確認するか、エラー レポートがオンになっていることを確認してください)。

于 2012-05-21T09:23:06.050 に答える
1

ヘッダーの前に送信されるhtmlはありますか?空白でも?

これも試してください(ここから)

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
于 2012-05-21T09:27:00.730 に答える
0

HTTP ヘッダーの "Location" は、すべてのブラウザーで常に正しく機能していないようです (私の経験によると)。また、'Location' ヘッダーをエコーする前に HTML (またはテキストなど) を既に 'エコー' した場合、PHP 関数の 'header' は機能しません。

次のコードを使用します。

<?php
$Js_Redirect = 
"<script>"+
"top.location = 'index.php';"+
"</script>";

echo $Js_Redirect;
exit();
?>

それ以外の

<?php
header('Location: index.php');
?>
于 2012-05-21T09:22:16.343 に答える
0
   if(isset($your_set_values)
    {
         header("Location:index.php");
    }

うまくいかないようなら:-

最初に何かエラーがないか探してみてください。

-- を使用して

error_reporting(E_ALL & ~E_NOTICE);

エラーが見つからなかった場合....クエリと何を印刷してみてください..

于 2012-05-21T09:24:54.770 に答える
0

header()実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から を呼び出す必要があることに注意してください。include 関数、require 関数、または別のファイル アクセス関数を含むコードを読み取り、header() が呼び出される前に出力されるスペースまたは空の行があることは、非常に一般的なエラーです。単一の PHP/HTML ファイルを使用する場合にも、同じ問題が存在します。

<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('Location: http://www.example.com/');
?>

参考


解決策 1:ファイルで、PHP コードを先頭 (<html>タグの上など) に移動し、関数を使用する前に何もエコーしないようにしheader()ます。

解決策 2:
コードのリファクタリングに問題がある場合は、出力バッファリングを使用する必要があります。あなたのphpページのob_start()一番最初の行として置きob_end_flush()、. これにより、すべての出力が効果的にバッファリングされ、出力が実際に印刷される前にヘッダー関数を呼び出すことができます。 注:常にまたはヘッダーを設定した後に忘れないでください。ob_end_clean()header() exitdie()Location

于 2012-05-21T09:31:52.017 に答える