-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...

索引 ['formPok'] 已设置,因为我没有转到“index.php”。

变量具有值,因为我可以放置 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 函数是两个包含。* PHP 变量 inits 和表单读取是两个包含(我在此测试页面中编辑的)

  • 我有四个页面,其中包括根本没有任何 PHP 通知的作品!
  • 还有三个,其中所有 60 多个表单输入都是“未定义”...

在我解决这个问题之前,我还有四页要做,不想继续。我不知道这里出了什么问题,需要你能想到的任何想法。EXCEPT抑制PHP Notices...(这里有错误需要正确处理)

提前谢谢你,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 脚本,并为每一段运行一次。一切都很好: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 通知的帖子,唯一的解决方案是关闭通知。没有一个真正的解决方案。

感谢所有花时间阅读和回复的人!

艾娃

4

2 回答 2

1

我之前遇到过这个问题,我相信您需要使用isset来查看是否选中了复选框的值。

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

这里发生的是,我首先使用条件检查复选框是否已检查(或设置)。如果条件为真,我将获得传递的值。

此页面可能会更清楚地说明该主题: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. 在 php 中,检查是否$_REQUEST包含您的数据

于 2013-10-29T14:37:31.713 回答