我的php文件中有以下代码:
$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
然后当我通过点击html文件中的提交按钮执行文件时,我收到一条通知错误说:
Notice: Undefined index: userID in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 19
Notice: Undefined index: userPass in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 20
Notice: Undefined index: adminFirstName in C:\wamp\www\CaNeCo\CaNeCo_Admin_Reg.php on line 21
其中您可以从代码中看到第19,20和21行。我尝试将isset()函数添加到我的代码中,就像我从其他网站/论坛中读到的一样,但是当我这样做时,它并没有解决我的问题。它只隐藏错误消息,变量仍为空。
我该如何解决这个问题?另外,我只是想知道为什么它只发生在5个声明中的3个? $p_adminType = $_POST['adminType'];
和$p_lastName = $_POST['adminLastName'];
只是工作得很好而不是其他3个?有人可以赐教我这个吗?
这是我的html文件:
<form method="post" action="CaNeCo_Admin_Reg.php">
<table width="400">
<tr>
<td><b>Log-in Information:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Administrator Type:</td>
<td>
<select name="adminType" id="adminType">
<option value="0">Please Select</option>
<option value="1">Super Administrator</option>
<option value="2">Administrator</option>
<option value="3">Secretary</option>
<option value="4">Viewer</option>
</select>
</td>
</tr>
<tr>
<td>User ID: </td>
<td><input type="text" name:"userID" id="adminUserID" placeholder="User I.D." maxlength="20" size="35"/></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name:"userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td>
</tr>
<tr>
<td>Repeat Password:</td>
<td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="25"><b>Personal Information:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>First Name: </td>
<td><input type="text" name:"adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td>
</tr>
<tr>
<td>Last Name: </td>
<td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="50"><center><input type="submit" value="Submit"/></center></td>
</tr>
</table>
答案 0 :(得分:0)
首先检查$ _POST是否保留一些值。
所以在代码上方使用 print_r($ _ POST), 它可以帮助您识别错误,
答案 1 :(得分:0)
可能会抛出未定义的索引,因为您没有在html表单中定义这些名称。您的表单必须如下所示:
<input type='text' name='adminType'/>
<input type='text' name='userID'/>
<input type='text' name='userPass'/>
<input type='text' name='adminFirstName'/>
<input type='text' name='adminLastName'/>
或者您正在使用的任何输入type
。您还应该发布您的表单代码以提供更多信息。
检查您的html表单中是否确定了这些名称。
<强>更新强>
您发布了表单代码并看到了错误。您正在使用:
来使用=
将值添加到您的输入的name
属性中。如果你看一下,你接收到服务器的唯一2个元素是正确发送到服务器的,因为你定义了它们的名称属性,如name={value}
,但其他3个属性被定义为name:{value}
。 HTML中不存在使用:
的赋值,并且表单不知道如何使用该属性发送该元素,因此您的服务器永远不会收到具有名为userID
的属性的元素,因为userID
是未定义为已经说过(name={value}
)。
答案 2 :(得分:0)
你的HTML应该是这样的: -
<form method="post" action="CaNeCo_Admin_Reg.php">
<table width="400">
<tr>
<td><b>Log-in Information:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Administrator Type:</td>
<td>
<select name="adminType" id="adminType">
<option value="0">Please Select</option>
<option value="1">Super Administrator</option>
<option value="2">Administrator</option>
<option value="3">Secretary</option>
<option value="4">Viewer</option>
</select>
</td>
</tr>
<tr>
<td>User ID: </td>
<td><input type="text" name="userID" id="adminUserID" placeholder="User I.D." maxlength="20" size="35"/></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="userPass" id="adminUserPass" placeholder="Password" maxlength="25" size="35"/></td>
</tr>
<tr>
<td>Repeat Password:</td>
<td><input type="password" name="repeatPass" id="adminRepeatPass" placeholder="Repeat Password" maxlength="25" size="35"/></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="25"><b>Personal Information:</b></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>First Name: </td>
<td><input type="text" name="adminFirstName" id="adminFirstName" placeholder="First Name" maxlength="20" size="35"/></td>
</tr>
<tr>
<td>Last Name: </td>
<td><input type="text" name="adminLastName" id="adminLastName" placeholder="Last Name" maxlength="25" size="35"/></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="50"><center><input type="submit" value="Submit"/></center></td>
</tr>
</table>
答案 3 :(得分:-1)
对于现有的cheking index,你可以使用像array_key_exists或isset这样的php函数,如果找不到索引你必须将init变量设为空(null或空字符串):
if (array_key_exists('adminType', $_POST)) {
$p_adminType = $_POST['adminType'];
} else {
$p_adminType = '';
}
if (array_key_exists('userID', $_POST)) {
$p_adminUserID = $_POST['userID'];
else {
$p_adminUserID = '';
}
if (array_key_exists('userPass', $_POST)) {
$p_adminUserPass = $_POST['userPass'];
else {
$p_adminUserPass = '';
}
if (array_key_exists('adminFirstName', $_POST)) {
$p_firstName = $_POST['adminFirstName'];
else {
$p_firstName = '';
}
if (array_key_exists('adminLastName', $_POST)) {
$p_lastName = $_POST['adminLastName'];
else {
$p_lastName = '';
}
答案 4 :(得分:-1)
顺便说一句,这些名字似乎很混乱。
我认为你应该改写这些陈述:
$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
进入:
$p_adminType = $_POST['type'];
$p_adminUserID = $_POST['userID'];
$p_adminUserPass = $_POST['userPass'];
$p_adminFirstName = $_POST['firstName'];
$p_adminLastName = $_POST['lastName'];
或:
$p_type = $_POST['adminType'];
$p_userID = $_POST['adminUserID'];
$p_userPass = $_POST['adminUserPass'];
$p_firstName = $_POST['adminFirstName'];
$p_lastName = $_POST['adminLastName'];
或:
$p_type = $_POST['type'];
$p_userID = $_POST['userID'];
$p_userPass = $_POST['userPass'];
$p_firstName = $_POST['firstName'];
$p_lastName = $_POST['lastName'];
或:
$p_adminType = $_POST['adminType'];
$p_adminUserID = $_POST['adminUserID'];
$p_adminUserPass = $_POST['adminUserPass'];
$p_adminFirstName = $_POST['adminFirstName'];
$p_adminLastName = $_POST['adminLastName'];