PHP未定义索引错误。如何修复?
可能重复:PHP未定义索引错误。如何修复?,php,Php,可能重复: 我收到这个通知: PHP注意:第2行的/home/../savevote.PHP中未定义索引:votefor 我怎样才能解决这个问题 下面是我在savevote.php中的第2行: <?php $votefor = $_REQUEST["votefor"]; load(“../vote_dir/xml/addresses.xml”); $addresses=$doc->getElementsByTagName(“地址”); $pVoted=false; $pFound=
我收到这个通知: PHP注意:第2行的/home/../savevote.PHP中未定义索引:votefor 我怎样才能解决这个问题 下面是我在savevote.php中的第2行:
<?php
$votefor = $_REQUEST["votefor"];
load(“../vote_dir/xml/addresses.xml”);
$addresses=$doc->getElementsByTagName(“地址”);
$pVoted=false;
$pFound=false;
//循环遍历addresses节点,查看此人之前是否进行过投票
foreach($地址作为$地址)
{
$lastVisitions=$address->getElementsByTagName(“lastvisit”);
$lastvisit=$lastvisits->item(0)->nodeValue;
$ips=$address->getElementsByTagName(“ip”);
$ip=$ips->item(0)->nodeValue;
如果($ip==$domain)
{
$pFound=true;
如果($LastVisite==$today)
$pVoted=true;
其他的
{
$lastVisitions->item(0)->nodeValue=$today;
$doc->save(“../vote_dir/xml/addresses.xml”);
}
打破
}
其他的
继续;
}
if($pVoted==true)//已投票
{
回声“ΈχετεΔηψηφσει!”;
}
else//更新XML文件
{
if($pFound==false)//将IP和日期的新节点添加到addresses.xml
{
回声“ΕΕχαριστομεποψηφσατε!”;
$newAddy=$doc->getElementsByTagName('addresses')->项(0);
$newAddressElement=$doc->createElement(“地址”);
$newlastVisiteElement=$doc->createElement('lastVisite');
$newAddressElement->appendChild($newLastVisiteElement);
$newIPElement=$doc->createElement('ip');
$newAddressElement->appendChild($newIPElement);
$dayvalue=$doc->createTextNode($today);
$dayvalue=$newLastVisitElement->appendChild($dayvalue);
$ipvalue=$doc->createTextNode($domain);
$ipvalue=$newIPElement->appendChild($ipvalue);
$newAddy->appendChild($newAddressElement);
$doc->save(“../vote_dir/xml/addresses.xml”);
}
其他的
{
回声“ΕΕχαριστιμεγιατηνψφοσας”;
}
//更新投票
$doc=新的DOMDocument();
$doc->load(“../vote_dir/xml/results.xml”);
$pollitems=$doc->getElementsByTagName(“pollitem”);
foreach($pollitems作为$pollitem)
{
$entries=$pollitem->getElementsByTagName(“entryname”);
$entry=$entries->item(0)->nodeValue;
如果($entry==$votefor)
{
$Voces=$pollitem->getElementsByTagName(“投票”);
$count=$voces->item(0)->nodeValue;
$voces->item(0)->nodeValue=$count+1;
打破
}
}
$doc->save(“../vote_dir/xml/results.xml”);
}
}
其他的
{
回声“Αποτελέσματαψηφοφρίαςέχρι∑τγμς”;
}
//获得最大票数
$doc=新的DOMDocument();
$doc->load(“../vote_dir/xml/results.xml”);
$maxvoces=0;
$pollitems=$doc->getElementsByTagName(“pollitem”);
foreach($pollitems作为$pollitem)
{
$Voces=$pollitem->getElementsByTagName(“投票”);
$vote=$votes->item(0)->nodeValue;
$maxvotes=$maxvotes+$vote;
}
//生成结果表
$doc=新的DOMDocument();
$doc->load(“../vote_dir/xml/results.xml”);
$pollitems=$doc->getElementsByTagName(“pollitem”);
foreach($pollitems作为$pollitem)
{
$entries=$pollitem->getElementsByTagName(“entryname”);
$entry=$entries->item(0)->nodeValue;
$Voces=$pollitem->getElementsByTagName(“投票”);
$vote=$votes->item(0)->nodeValue;
$tempWidth=$vote/$maxvotes;
$tempWidth=300*$tempWidth;
$votepct=四舍五入($vote/$maxvotes)*100);
回显“$entry”;
回音“$votepct%($VOUT VOUTS)”;
}
回声“$maxvotsάτομαψφφσανμέχρρτ974;ρα”;
回声“;
?>
@布莱恩
<script language="javascript">
function setVote(voteName)
{
document.getElementById("votefor").value = voteName;
}
function confirmSubmit()
{
if (document.getElementById("votefor").value == "")
{
var agree=confirm("Παρακαλώ επιλέξτε μια απάντηση, για να ψηφίσετε");
return false;
}
}
</script>
函数setVote(voteName)
{
document.getElementById(“votefor”).value=voteName;
}
函数confirmSubmit()
{
if(document.getElementById(“votefor”).value==“”)
{
var agree=确认(“παρακαλώεπλιλέξτεμιαπάντησηη,γιαναψηφίσεε”);
返回false;
}
}
1/检查是否有名为votefor的请求参数
2/检查是否有错发您可以通过设置错误报告否来忽略通知报告以显示它们
error\u reporting(E\u ALL&~E\u NOTICE)代码>像这样处理它:
if(array_key_exists("votefor", $_REQUEST)) {
...
}
未传递请求参数。如果您知道它可能丢失的原因,只是想阻止通知,您可以说:
$votefor = isset( $_REQUEST["votefor"] ) ? $_REQUEST["votefor"] : null;
使用$\u REQUEST
是不安全的,因为它可以是$\u GET
或$\u POST
,最好指定您想要的
第二步,您需要检查数组键是否存在。这可以通过正式的方式来完成。但不幸的是,这个函数有点慢。您可以使用函数替换它,但这表示未设置null
值,并且当值为null时返回false
。最好的方法是同时使用它们,首先是isset
,然后是array\u key\u存在
:
<?php
if (isset($_POST['votefor']) || array_key_exists($_POST['votefor'])) {
// do something
}
?>
或者,如果您确定值不会为null
,则仅使用isset
如果几乎100%确定数组中存在索引votefor
,则需要对其进行调试。$\u请求
数组以查看哪些项(和索引)在其中,并查看您做错了什么。您是在post请求中还是作为get请求的查询字符串的一部分提交名为votefor的变量?您能向我们显示所有代码吗?这意味着您尚未实际为请求分配值。请不要使用。代码ia约150行。。。这就是为什么我不知道postNotices不是免费输出的,忽略它们并不能解决任何问题。你更愿意这样做
<?php
if (isset($_POST['votefor']) || array_key_exists($_POST['votefor'])) {
// do something
}
?>