$_POST 未定义的索引,但值通过
$_POST Undefined Index but values get through
这个问题解决了 - 见下文!
偶然地,我发现了这个问题...我的 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"而不是"**"为空)。这适用于每个表单输入。
表格到达"测试人员.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+ 表单输入都是"未定义"的......
我还有四页要做,在我解决这个问题之前不想继续。我不知道这里出了什么问题,需要你能想出的任何想法。除了禁止PHP通知...(这里有一个错误需要正确处理)
提前谢谢你,艾娃·
为清楚起见,添加了:进入 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,发现当引用 In the 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 通知的帖子,唯一的解决方案是关闭通知。而且没有真正的解决方案。
感谢所有花时间阅读和回复的人!
艾娃
我之前遇到过这个问题,我相信您需要使用isset
来查看复选框的值是否被选中。
if(isset($_POST['formPCSEsiteHeadingShadow'])){ $CSEsiteHeadingShadow = $_POST['formPCSEsiteHeadingShadow']; }
这里发生的事情是,我首先检查复选框是否使用条件选中(或设置)。如果条件为真,我将传递值。
此页面可能会更清楚地说明该主题:http://siliconstation.com/how-fix-php-notice-undefined-index/
-
似乎您的 javascript 变量
vilkenMall
未设置。使用 alert() 或 console.log() 检查其值。 -
另外,我不知道为什么你在
name
、=
和输入名称之间放置空格 -
在 PHP 中,检查
$_REQUEST
是否包含您的数据
- 名称输入的索引
- 如何使用WCF服务和javascript表单post上传.doc文件
- Jquery POST未填充数组
- 如何在php文件中获取$.post-ajax传递的值
- 在jQuery中获取表的行索引
- 测试索引值是否等于某个数字的倍数
- 循环遍历数组中的特定索引
- 在POST中将html表作为csv提交
- 按照选项卡索引的顺序循环一个jQuery选择
- 在JavaScript中通过索引从对象数组中获取值
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使用post方法从方法上传文件
- Django: AJAX + CSRF POST gives 403
- AJAX不会在文件上传后重定向到网页-POST方法
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 下载使用POST数据动态生成的文件
- 索引未在 $http.post 查询中获取正确的值
- AJAX调用中缺少POST参数会导致PHP脚本中出现未定义的索引警告
- AngularJS:循环POST请求并将每个索引传递到相关响应中
- PHP post请求未识别索引错误