使用GET方法时如何防止获取未定义的索引

时间:2019-01-28 02:56:18

标签: php

所以我有2页。 MainFile.phplogin.php。在Mainfile.php中,您必须选择一个仓库,每个仓库中都有值或ID。

这是我的MainFile.php

<div class="container">
<div class="wrapper">
    <h1>Department</h1>
    <label>Choose Warehouse</label><br>
    <select id="wh">
        <option value=""></option>
        <option value="login_WH.php?whID=1">Warehouse 1</option>
        <option value="login_WH.php?whID=2">Warehouse 2</option>
        <option value="login_WH.php?whID=3">Warehouse 3</option>
        <option value="login_WH.php?whID=4">Warehouse 4</option>
        <option value="login_WH.php?whID=5">Warehouse 5</option>
        <option value="login_WH.php?whID=6">Warehouse 6</option>
        <option value="login_WH.php?whID=7">Warehouse 7</option>
        <option value="login_WH.php?whID=8">Warehouse 8</option>
        <option value="login_WH.php?whID=9">Warehouse 9</option>
        <option value="login_WH.php?whID=10">Warehouse 10</option>
        <option value="login_WH.php?whID=11">Warehouse 11</option>
        <option value="login_WH.php?whID=12">Warehouse 12</option>
        <option value="login_WH.php?whID=13">Warehouse 13</option>
        <option value="login_WH.php?whID=14">Warehouse 14</option>
        <option value="login_WH.php?whID=15">Warehouse 15</option>
        <option value="login_WH.php?whID=16">Warehouse 16</option>
        <option value="login_WH.php?whID=17">Warehouse 17</option>
        <option value="login_WH.php?whID=18">Warehouse 18</option>
        <option value="login_WH.php?whID=19">Warehouse 19</option>
        <option value="login_WH.php?whID=20">Warehouse 20</option>
        <option value="login_WH.php?whID=21">Warehouse 21</option>
        <option value="login_WH.php?whID=22">Warehouse 22</option>
        <option value="login_WH.php?whID=23">Warehouse 23</option>
        <option value="login_WH.php?whID=24">Warehouse 24</option>
        <option value="login_WH.php?whID=25">Warehouse 25</option>
        <option value="login_WH.php?whID=26">Warehouse 26</option>
        <option value="login_WH.php?whID=27">Warehouse 27</option>
        <option value="login_WH.php?whID=28">Warehouse 28</option>
        <option value="login_WH.php?whID=29">Warehouse 29</option>
        <option value="login_WH.php?whID=30">Warehouse 30</option>
    </select>
</div>

login.php中,我将在MainFile.php中获得该选项的ID,该ID将用于确定该用户是否在仓库1,2,3等上,然后重定向该用户如果用户名,密码和ID与我在数据库中的记录匹配,请转到homepage。除非输入错误的用户名或密码,否则我的代码没有任何错误。如果用户只是为了获得ID而不在登录时出错而去Mainfile.php,那将是非常不便的。

这是我在login.php中的代码:

<form method="post" action="login_WH.php" autocomplete="off">

    <?php echo display_error(); ?>

    <?php

        $id = $_GET["whID"];
        $_SESSION["whID"] = $id;
    ?>

    <div class="input-group">
        <label>Username</label>
        <input type="text" name="username" maxlength="15">
    </div>
    <div class="input-group">
        <label>Password</label>
        <input type="password" name="password" maxlength="15">
    </div>
        <input type="text" name="whID" class="hide" value="<?php echo $id ?>">
    <div class="input-group">
        <button type="submit" class="btn" name="login_btn_wh">Login</button>
    </div>
    <p>
        Not your department? <a href="MainFile.php">Go back</a>
    </p>
    </div>
</form>

由于声誉低下,我无法发布图片。但我在login.php行中的“ $ id = $ _GET [“ whID”];”行中收到了“通知:未定义索引:C:\ xampp \ htdocs \ project2 \ login_WH.php在第29行的whID” 我尝试使用会话,但是我认为它不起作用(或者我只是用错了?)。任何帮助将不胜感激!顺便说一句,我的英语不好意思,希望您能理解我的问题。

1 个答案:

答案 0 :(得分:1)

您的$_GET参数未设置。 $_GET URL 获取whID参数。除非您手动导航到login_WH.php?whID=1login_WH.php?whID=2等页面,否则$_GET参数将永远不会被设置。

相信您打算做的是分别从MainPage.php链接到每个仓库:

<a href="login_WH.php?whID=1">Warehouse 1</a>
<a href="login_WH.php?whID=2">Warehouse 2</a>

然后在login.php脚本上,您将能够收到$_GET["whID"]参数。您还可以通过 isset() 进行检查:

<?php
if (isset($_GET["whID"] && !empty($_GET["whID"])) {
   $id = $_GET["whID"];
} else {
  // Redirect or throw an error
}