2013-10-29 54 views
-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("PM = *"+document.getElementById("formPmall").value+"*"); 

,我得到了正確答案(「」不是「**」爲空)。 這適用於每個表單輸入。

的形式到達 「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... 

指數[ 'formPok']設置,因爲我不會去 「的index.php」。

變量具有值,因爲我可以把一個PHP死();像這樣在他們之後:

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

,我得到正確的答案(「‘ - 不是’」爲初始化或‘**’爲空) 這對每一個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函數是兩個包含。 *的PHP變量inits和形式的閱讀是兩個包括(我編輯到頁面此測試)

  • 我有四頁,其中包括這些沒有得到任何通知PHP在所有的作品!
  • 三和所有60點以上形式的輸入是「未定義」 ...

我有四頁,以使,不希望我解決這個問題之前,繼續說下去。 我不知道這裏有什麼問題,需要你想出任何想法。 EXCEPT抑制PHP聲明... (這裏有一個錯誤,需要用正確的方式處理)

謝謝你在前進, 艾娃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腳本,併爲每個腳本運行一次。一切都很好:PHP代碼本身並沒有產生任何通知。所以我添加了兩個CSS包含的HTML頭:一個通用,一個修改其中一些通用。

沒有聲明:一切都很好,所以我一塊一塊地添加了HTML,發現一個類在引用到HTML中時是「罪魁禍首」!

類被宣佈像這樣(修改一般一個:不同的顏色和無背景圖像)

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

的解決方案是聲明它是這樣的(完全正確的 - 不馬虎切正糊) :

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

每一個通知(發送到這個頁面的每個值 - 60+)都沒有了!

請注意,直到它被引用到HTML中,PHP通知纔出現!

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

我希望這可以幫助別人,因爲我發現很多關於PHP通知的帖子,其中唯一的解決方案是關閉通知。而沒有一個真正的解決方案。

感謝大家花時間閱讀和回覆!

艾娃

+1

爲什麼?在我閱讀的帖子中(每個人都建議),這個特定的問題,當它被問到時,並沒有以壓制PHP消息的方式解決。這不是一個解決方案。 – Ava

+0

歡迎來到[so]。請等待,如果你已經解決了你自己的答案 - 即使你還不能回答,只需等待。 :) –

回答

1

我就遇到了這個問題之前,我相信你需要使用isset,看是否有複選框的值進行檢查。

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

這裏發生了什麼是,我首先檢查複選框是否使用條件CHECKED(或設置)。如果條件成立,我會獲得通過的值。

此頁面可以揭示主題更多的光線:http://siliconstation.com/how-fix-php-notice-undefined-index/

+0

對不起...什麼複選框?我知道輸入是被設置的,因爲我可以在提交表單之前提醒()輸入值(見上面) – Ava

+0

嘗試將'isset()'添加到其中一個變量並查看是否擺脫了該警告。如果是這樣,那麼當你試圖設置一個空的變量(意味着它沒有被填寫或檢查/選擇等)時,問題就會發生。如果這不能解決它,那麼你還有其他一些問題。 – Vektor

+0

但試圖設置一個空變量......輸入字段的信號如何「未定義索引」?我知道的字段被定義是因爲我可以在提交表單前提醒()它們,並在到達新頁面時使用這些值... – Ava

0
  1. 看來你的JavaScript變量vilkenMall未設置。用alert()或console.log()檢查它的值。

  2. 另外,我不知道爲什麼你把PHP name=和輸入名稱

  3. 之間的間隙,檢查$_REQUEST包含您的DATAS

+0

謝謝,1)已設置。 2)相關? 3)所有數據都通過OK並妥善處理。但是,怎樣才能定義和攜帶價值? – Ava

+0

我不知道2°是否相關,但以防萬一。如果數據存在於$ _REQUEST中,或者它們通過_GET發送,則POST值在處理之前未被設置 – Asenar

+0

另外,關於您的通知,也許它們涉及其他行 – Asenar