使用开机自检时出现“注意:未定义的索引”错误


“Notice: Undefined index” error when using POST

我开始掌握Web开发的窍门。我遇到了一个小问题,如下所示:未定义的索引:用户名

我知道这是因为我正在使用 GET 但实际的 php 脚本有效并且对数据库进行了更改 - 这很好。不好的是向用户显示此错误的事实: 未定义的索引:用户名

这是我的代码:

<!doctype html>
    <form id='register' action='changeticket.php' method='POST'>
    <input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >
    <fieldset >
    <legend>Change ticket</legend>
    <label for='ticket' >Proposed ticket request number: </label>
    <input type='text' name='ticketValue' id='tickets'  />
    <input type='submit' name='Submit' value='Submit' />
    </fieldset>
</form>
<?php
require "init.php";
if(!empty($_POST['ticketValue']) && !empty($_POST['username'])){
    $ticketValue = $_POST['ticketValue'];
    $stmt = "UPDATE ticketTable SET ticket = ? WHERE username = ?";
    $result = $dbcon->prepare($stmt);
    $result->bind_param('ss', $ticketValue, $username);
    $result->execute();
    echo "Ticket has been changed";
} 
else{
    echo "Not able to make changes sorry";
}
?>

我不想在单击提交后使参数在 url 中可见,所以我使用的是 POST。就像我说的那样它有效,但显示错误未定义的索引:用户名。

我该如何解决这个问题?

谢谢你

一种选择是使用 $_REQUEST 而不是 $_GET.$_REQUEST 同时具有两个变量(_GET 美元和 _POST 美元(

你忘了初始化$username..

    <!doctype html>
    <form id='register' action='changeticket.php' method='POST'>
    <input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >
    <fieldset >
    <legend>Change ticket</legend>
    <label for='ticket' >Proposed ticket request number: </label>
    <input type='text' name='ticketValue' id='tickets'  />
    <input type='submit' name='Submit' value='Submit' />
    </fieldset>
</form>
<?php
require "init.php";
if(!empty($_POST['ticketValue']) && !empty($_POST['username'])){
    $ticketValue = $_POST['ticketValue'];
    $username = $_POST['username'];
    $stmt = "UPDATE ticketTable SET ticket = ? WHERE username = ?";
    $result = $dbcon->prepare($stmt);
    $result->bind_param('ss', $ticketValue, $username);
    $result->execute();
    echo "Ticket has been changed";
} 
else{
    echo "Not able to make changes sorry";
}
?>

由于您使用 POST 方法而不是 GET 方法来发送参数,因此您应该更改以下部分:

<input type="hidden" name="username" value="<?php echo $_GET['username']; ?>" >

自:

<input type="hidden" name="username" value="<?php echo $_POST['username']; ?>" >