-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

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 には存在せず、フォームはその属性でその要素を送信する方法を認識していないため、サーバーは という名前の属性を持つ要素を受け取る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

既存のインデックスを確認するには、array_key_exists や isset などの php 関数を使用できます。インデックスが見つからない場合は、変数を空 (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 に答える