使用POST时“注意:未定义的索引”错误

时间:2016-03-24 03:08:18

标签: php

我开始了解网络开发。我面临一个小问题,如下所示:未定义的索引:用户名

我知道这是因为我正在使用GET,但实际的PHP脚本工作并且更改了对MS的更改 - 这很好。不正确的是向用户显示此错误的事实:未定义的索引:用户名

这是我的代码:

<!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";
}
?>

点击提交后,我不想在网址中显示参数,所以我使用的是POST。就像我说它有效,但错误未定义索引:用户名正在显示。

我该如何解决这个问题?

感谢你

3 个答案:

答案 0 :(得分:3)

一种选择是使用$ _REQUEST而不是$ _GET。 $ _REQUEST有两个变量($ _GET和$ _POST)

答案 1 :(得分:0)

您忘记初始化$ 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";
}
?>

答案 2 :(得分:-2)

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

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

要:

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