0

データベースにデータを送信する PHP フォームがあります。フォーム アクション コードは次のとおりです。

<form action="<?php echo $editFormAction; ?>"
      method="post" name="form1" id="form1">

$editFormAction は、次のコード ブロックを参照します。

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    $insertSQL = sprintf("INSERT INTO gifts (giftid, customerid, itemtype, itemtitle,                                                                                            itemdescription, itemurl, dateadded, received, datereceived, vendor, ordernumber) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                   GetSQLValueString($_POST['giftid'], "int"),
                   GetSQLValueString($_POST['customerid'], "int"),
                   GetSQLValueString($_POST['itemtype'], "text"),
                   GetSQLValueString($_POST['itemtitle'], "text"),
                   GetSQLValueString($_POST['itemdescription'], "text"),
                   GetSQLValueString($_POST['itemurl'], "text"),
                   GetSQLValueString($_POST['dateadded'], "date"),
                   GetSQLValueString($_POST['received'], "text"),
                   GetSQLValueString($_POST['datereceived'], "date"),
                   GetSQLValueString($_POST['vendor'], "text"),
                   GetSQLValueString($_POST['ordernumber'], "text"));

mysql_select_db($database_testing_registryconnection, $testing_registryconnection);
$Result1 = mysql_query($insertSQL, $testing_registryconnection) or die(mysql_error());

$insertGoTo = "success.php";
    if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
    }
    header(sprintf("Location: %s", $insertGoTo));
}

他の多くのページでこのコードのバリエーションを使用しましたが、この特定のプロジェクトでは、フォーム データは実際に MySQL データベースに挿入されますが、フォーム ページは単純にリロードされて空白のフォームが表示されます。そして、私の記憶が正しければ、この正確なコードはこのプロジェクトでしばらくの間想定どおりに機能していましたが、「success.php」へのリダイレクトを妨げている何かが変更されたに違いありません。

何を確認する必要があるかについてのヒントはありますか?もっとコードを見る必要がありますか?

4

1 に答える 1

0

上記の2つのコメントを組み合わせるには...最初に試みること$insertGoToは、絶対値(つまりhttp://www.mydomain.com/success.php)に置き換えてから、最後の行を置き換えることです(クリーニングのために)上) と: header("Location: $insertGoTo");. それが機能するかどうかを確認しますか?

于 2013-08-09T20:48:17.983 に答える