-1

この問題は解決されました- 以下を参照してください!

たまたまこの問題を発見しました... HTML フォームの最初と最後:

<form name="personform" id="personform" action="testperson.php" method="post" target="_blank">
   <input type="hidden" id="formPmall" name = "formPmall" value = "">
   <input type="hidden" id="formPCSEsiteHeading" name = "formPCSEsiteHeading" value = "">
   <input type="hidden" id="formPCSEsiteHeadingText" name = "formPCSEsiteHeadingText" value = "">
   <input type="hidden" id="formPCSEsiteHeadingShadow" name = "formPCSEsiteHeadingShadow" value = "">

<!-- skipping to end of form -->

   <input type="hidden" id="formPok" name = "formPok" value = "">
</form>

これは、値を設定してフォームを送信するために呼び出す関数です。

function testaPerson() {
   document.getElementById("formPmall").value = vilkenMall;
   document.getElementById("formPCSEsiteHeading").value = fAktuellSajtrubrik;
   document.getElementById("formPCSEsiteHeadingText").value = CSEsiteHeadingText;
   document.getElementById("formPCSEsiteHeadingShadow").value = CSEsiteHeadingShadow;

/* Skipping to end of function */

   document.getElementById("formPok").value = "ok";

// SUBMIT
   document.getElementById("personform").submit();
}

この関数は、送信の直前に次のように JS alert() を配置できるため機能します。

alert("PM = *"+document.getElementById("formPmall").value+"*");

そして、私は正しい答えを得る(空の「**」ではなく「4 」)。これは、すべてのフォーム入力に対して正常に機能します。

フォームが「testperson.php」に到着します。

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

if (!isset($_POST['formPok'])) header('Location: ../index.php');

// Init variables
$mall = 0;
$CSEsiteHeading = "#FF00FF";
$CSEsiteHeadingText = "";
$CSEsiteHeadingShadow = "";
// Skipping 60+ variable inits

// Read the form
$mall = $_POST['formPmall'];
$CSEsiteHeading = $_POST['formPCSEsiteHeading'];
$CSEsiteHeadingText = $_POST['formPCSEsiteHeadingText'];
$CSEsiteHeadingShadow = $_POST['formPCSEsiteHeadingShadow'];
// Skipping the rest...

「index.php」に行っていないので、インデックス ['formPok'] が設定されています。

PHP die(); を配置できるように、変数には値があります。彼らの後にこのように:

die("PM = *".$mall."*");

そして、私は正しい答えを取得します(「4」-初期化された「0」または空の「 ** 」ではありません)これは、すべてのPHP変数に対して正常に機能します。

最終ページも問題なく表示されています。

しかし!私はphp_error.logでこれを取得します:

[29-Oct-2013 13:30:01 UTC] PHP Notice:  Undefined index: formPmall in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 27
[29-Oct-2013 13:30:01 UTC] PHP Notice:  Undefined index: formPCSEsiteHeading in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 29
[29-Oct-2013 13:30:01 UTC] PHP Notice:  Undefined index: formPCSEsiteHeadingText in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 30
[29-Oct-2013 13:30:01 UTC] PHP Notice:  Undefined index: formPCSEsiteHeadingShadow in /Applications/MAMP/htdocs/tngcse/template4/testperson.php on line 31

投稿されたすべての値に対して!毎回60以上!そして、そのページは繰り返し開かれます。

その他の事実: * HTML フォームと JS 関数は 2 つのインクルードです。* PHP 変数の初期化とフォームの読み取りは 2 つのインクルードです (このテスト用にページに編集したものです)。

  • これらのインクルードが PHP 通知をまったく取得せずに機能する 4 つのページがあります。
  • そして、60以上のフォーム入力がすべて「未定義」である3つ...

あと 4 ページ作成する必要があり、これを解決する前に先に進みたくありません。ここで何が問題なのかわかりません。あなたが思いつくアイデアが必要です。PHP通知を抑制することを除いて...(適切な方法で処理する必要があるエラーがここにあります)

よろしくお願いします、Ava T.

わかりやすくするために追加: PHP ページに入力され、最終ページに表示される値は次のとおりです。

formPmall: 4 (PHP init = 0)
formPCSEsiteHeading: #FF0000 (PHP init = #FF00FF)
formPCSEsiteHeadingText: "My Family" (PHP init = "")
formPCSEsiteHeadingShadow: "2px 2px 4px #000000" (PHP init = "")

すべてが初期化され、すべてが新しい値を取得します。しかし、何らかの理由でエラーログがいっぱいになります。なぜ?


私は自分の質問に答えることが許可されていないため (8 時間制限)、ここで編集します。

問題は解決された!

そして、解決策は通知よりもさらに奇妙です (つまり、私にとっては)。これは私がしたことです:

すべてのコードを削除し、PHP スクリプトを 1 つずつ追加して、1 つずつ実行しました。すべてが順調でした: PHP コード自体は通知を生成しませんでした。そこで、2 つの css インクルードを含む HTML ヘッドを追加しました。

通知なし: すべて問題なかったので、HTML を少しずつ追加したところ、IN THE HTML への参照時に 1 つのクラスが「犯人」であることがわかりました。

クラスは次のように宣言されました(一般的なものを変更します:異なる色と背景画像なし)

.line {
   color: #FF0000;
   background-image: url('');
}

解決策は、次のように宣言することでした(完全に正しい-ずさんなカットアンドペーストではありません):

.line {
   color: #FF0000;
   background-image: none;
}

すべての通知 (このページに投稿された値ごとに 1 つ - 60 以上) はなくなりました。

HTML で参照されるまでは、PHP 通知が表示されないことに注意してください。

<td class="line">This is my line</td>

PHP通知に関する非常に多くの投稿を見つけたので、これが他の人に役立つことを願っています。唯一の解決策は通知をオフにすることでした。そして、本当の解決策はありません。

時間を割いて読んで返信してくれたみんなに感謝します!

エイバ

4

2 に答える 2

1

isset以前にこの問題に遭遇しましたが、チェックボックスの値がチェックされているかどうかを確認するために使用する必要があると思います。

if(isset($_POST['formPCSEsiteHeadingShadow'])){ $CSEsiteHeadingShadow = $_POST['formPCSEsiteHeadingShadow']; }

ここで何が起こるかというと、最初に条件を使用してチェック ボックスが CHECKED (または設定) されているかどうかを確認しています。条件が真の場合、値が渡されます。

このページは、このトピックについてより多くの光を当てるかもしれません: http://siliconstation.com/how-fix-php-notice-undefined-index/

于 2013-10-29T14:33:57.147 に答える
0
  1. JavaScript 変数vilkenMallが設定されていないようです。その値を alert() または console.log() で確認してください。

  2. nameまた、=と入力名の間にスペースを入れる理由がわかりません

  3. $_REQUESTPHPで、データが含まれているかどうかを確認します

于 2013-10-29T14:37:31.713 に答える