-2

我的 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>&nbsp;</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>&nbsp;</td>
   </tr>
   <tr>
      <td colspan="25"><b>Personal Information:</b></td>
   </tr>
   <tr>
      <td>&nbsp;</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>&nbsp;</td>
   </tr>
   <tr>
      <td colspan="50"><center><input type="submit" value="Submit"/></center></td>
   </tr>
</table>

4

5 回答 5

0

首先你检查 $_POST 是否持有一些价值。

所以在您的代码上方使用print_r($_POST),它可以帮助您识别错误,

于 2013-05-13T10:32:29.340 回答
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 属性,name={value}但其他 3 个属性定义为name:{value}. :HTML 中不存在 with 的赋值,并且表单不知道如何发送具有该属性的该元素,因此您的服务器永远不会收到具有名为 的属性的元素,userID因为userID未定义为已经说过的 ( name={value})。

于 2013-05-13T10:33:04.040 回答
0

你的 html 应该是这样的: -

   <form method="post" action="CaNeCo_Admin_Reg.php">
   <table width="400">
    <tr>
        <td><b>Log-in Information:</b></td>
    </tr>
    <tr>
       <td>&nbsp;</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>&nbsp;</td>
   </tr>
    <tr>
    <td colspan="25"><b>Personal Information:</b></td>
   </tr>
    <tr>
  <td>&nbsp;</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>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="50"><center><input type="submit" value="Submit"/></center></td>
  </tr>
</table>
于 2013-05-13T10:58:28.453 回答
-1

对于检查索引是否存在,您可以使用 php 函数,如 array_key_exists 或 isset,如果找不到索引,您必须将变量初始化为空(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 = '';
}
于 2013-05-13T10:34:05.677 回答
-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'];
于 2013-05-13T10:39:28.030 回答