Php 为什么我会得到“未定义索引”?
目前,我正在开发“联系我们”表单。当我在本地主机上运行该脚本时,我的问题是什么?错误中的“名称”字段和“电子邮件”字段如下所示:Php 为什么我会得到“未定义索引”?,php,javascript,html,css,forms,Php,Javascript,Html,Css,Forms,目前,我正在开发“联系我们”表单。当我在本地主机上运行该脚本时,我的问题是什么?错误中的“名称”字段和“电子邮件”字段如下所示: (<br /><b>Notice</b>: Undefined index: name in <b>E:\wamp\www\rrr\btech\index.php</b> on line <b>49</b><br />) (<br /><b>Not
(<br /><b>Notice</b>: Undefined index: name in <b>E:\wamp\www\rrr\btech\index.php</b> on line <b>49</b><br />)
(<br /><b>Notice</b>: Undefined index: email in <b>E:\wamp\www\rrr\btech\index.php</b> on line <b>49</b><br />)
单击“提交”按钮后,响应将出现未定义的语法错误
<tr>
<td valign="bottom"><span class="contactus-txt">
<input name="textfield222" type="text" class="contact-field" style="width:125px;" value="<?php echo $_GET['name'];?>" />
</span></td>
<td valign="bottom"><span class="contactus-txt">
<input name="textfield2222" type="text" class="contact-field" style="width:125px;" value="<?php echo $_GET['Email-Id'];?>"/>
</span></td>
</tr>
我使用了html代码
谁能告诉我我犯了什么错误吗?正确的方法是:
所有变量在使用前都应初始化。下面是正确的方法:
所有变量在使用前都应该初始化。你的问题不是很清楚。我假设您对此表单有一个操作,并且有一个post或get方法 从我看到的两个输入中,如果表单使用GET方法,您的值应该在$u POST变量中显示为$u POST['textfield222']和$u POST['textfield2222'],以及$u GET['textfield222']和$u GET['textfield2222'] 一般来说,永远不要相信用户输入-在使用表单数据之前验证表单数据
我希望这是有用的。你的问题不是很清楚。我假设您对此表单有一个操作,并且有一个post或get方法 从我看到的两个输入中,如果表单使用GET方法,您的值应该在$u POST变量中显示为$u POST['textfield222']和$u POST['textfield2222'],以及$u GET['textfield222']和$u GET['textfield2222'] 一般来说,永远不要相信用户输入-在使用表单数据之前验证表单数据
我希望这是有用的。虽然我完全赞成“遵守规则”,但我从不为这些通知费心,我认为在这种情况下,关闭E_通知是完全可以的。我在没有E_通知的情况下开发,如果我检查每个变量的isset,这将非常耗时!请随意不同意@kieran第一次尝试调试不是小鸡大小的应用程序会让您放心。@kieran通知可能包含有关键入错误和未初始化变量的有价值信息,因此关闭通知不是一件好事。我必须对请求变量执行此操作,但这是您所说的方式,而不是通过以下方式检查变量:如果$s{echo'test';}您执行ifasset$s&&$s{echo'test';}每次$s可能没有被定义?@kieran:这样一个蹩脚的函数会使它的bucketload短一些,以便严格遵守:函数ifnull&$var,$default{if-isset$var&&$var!==null-return$var;return$default;}$foo=ifnull$\u-GET['foo'],1;虽然我完全赞成“遵守规则”,但我从不为这些通知费心,我认为在这种情况下,关闭E_通知是完全可以的。我在没有E_通知的情况下开发,如果我检查每个变量的isset,这将非常耗时!请随意不同意@kieran第一次尝试调试不是小鸡大小的应用程序会让您放心。@kieran通知可能包含有关键入错误和未初始化变量的有价值信息,因此关闭通知不是一件好事。我必须对请求变量执行此操作,但这是您所说的方式,而不是通过以下方式检查变量:如果$s{echo'test';}您执行ifasset$s&&$s{echo'test';}每次$s可能没有被定义?@kieran:这样一个蹩脚的函数会使它的bucketload短一些,以便严格遵守:函数ifnull&$var,$default{if-isset$var&&$var!==null-return$var;return$default;}$foo=ifnull$\u-GET['foo'],1;大+1表示从不信任用户输入。答案的其余部分也很好,但哦,天哪,当我看到$\u GET或$\u POST被直接回传或更糟的情况,甚至没有被转义,更不用说被验证时,我会不寒而栗。@Spudley事实上,这句话在这种情况下没什么作用。一个大的+1表示从不信任用户输入。答案的其余部分也很好,但是,哦,天哪,当我看到$\u GET或$\u POST被直接回传或更糟,甚至没有被转义,更不用说被验证时,我会发抖。@Spudley事实上,这句话在这种情况下没有什么作用。
<?php
$FORM['name'] = "";
$FORM['Email-Id'] = "";
if (isset($_GET['name'])) $FORM['name'] = htmlspecialchars($_GET['name']);
if (isset($_GET['Email-Id'])) $FORM['Email-Id'] = htmlspecialchars($_GET['Email-Id']);
?>
<tr>
<td valign="bottom"><span class="contactus-txt">
<input name="textfield222" type="text" class="contact-field" style="width:125px;" value="<?php echo $FORM['name'];?>" />
</span></td>
<td valign="bottom"><span class="contactus-txt">
<input name="textfield2222" type="text" class="contact-field" style="width:125px;" value="<?php echo $FORM['Email-Id'];?>"/>
</span></td>