2

アクションとしてinsert.phpを使用してフォームからデータを投稿しようとしています。ただし、データがデータベースに投稿されると、index.php にリダイレクトできません。

答えを見つけるために、次のサイトを検索しました。

この件に関する10個のstackoverflowの質問があります。

insert.php ファイルのコードは次のとおりです。

<?php 
include 'connect.php';
$id = $_POST['id']; 
$idea = mysql_real_escape_string($_POST['new_idea']); 

if(!$_POST['submit']) {
    echo "Please fill out the form!"; 
    header('Location: index.php'); 
} else {
    mysql_query("INSERT INTO user_idea (`id`, `idea`, `time_created`) VALUES(NULL, '$idea', NULL)") or die(mysql_error()); 
    echo "Idea has been added!"; 
    header('Location: index.php'); 
}?> 

私が収集したものから、header() 関数は、その前にテキスト出力がある場合は実行されません。「アイデアが追加されました!」というエコーなしでこの機能を試しました。「フォームに記入してください!」とエコーしますが、まだリダイレクトされません。

アドバイスをいただきありがとうございます。

-MF

4

4 に答える 4

6

PHPドキュメントから:

通常のHTMLタグ、ファイル内の空白行、またはPHPのいずれかによって、実際の出力を送信する前に、header()を呼び出す必要があります。

そしてあなたの場合、header()の前にechoを使用しています

于 2012-11-29T05:58:43.127 に答える
4

回避方法ob_start()ページ上部で使用

別の方法<?php: ページの先頭または末尾の空白を省略し、直後に?>も使用してくださいexit()header()

于 2012-11-29T05:57:36.950 に答える
1

これを試して

<?php 
 include 'connect.php';
 $id = $_POST['id']; 
 $idea = mysql_real_escape_string($_POST['new_idea']); 

 if(!$_POST['submit']) {
    $message = "Please fill out the form!"; 
    header('Location: index.php?message='.$message); exit;
 } else {
    mysql_query("INSERT INTO user_idea (`id`, `idea`, `time_created`) VALUES(NULL, '$idea', NULL)") or die(mysql_error()); 
    $message = "Idea has been added!"; 
    header('Location: index.php?message='.$message); exit;
 }?> 

エラーメッセージをindex.phpに渡し、そこに表示します。

于 2012-11-29T06:00:28.850 に答える
0

header() の前に出力を印刷しないでください。データをセッションに保存するか、URL を介して渡します。これを試してみてください。

于 2012-11-29T06:10:58.367 に答える