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
}
?>