2016-03-24 5 views
0

Web開発のハングアップを開始しています。私は次のような小さな問題に直面しています:未定義のインデックス:ユーザー名POSTを使用しているときに「通知:未定義インデックス」エラーが発生する

私はGETを使用していますが、実際のP​​HPスクリプトが動作し、変更されていることを知っています - 良いです。何が良いではないことは、このエラーがユーザーに表示されているという事実である:未定義のインデックス:私は、URLのパラメータが表示されるようにしたくない

<!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を使用しています。私はそれが動作すると言ったように、しかし、未定義のインデックスエラー:ユーザー名が表示されています。

どうすればこの問題を解決できますか?

あなたはパラメータを送信する代わりに、GETメソッドのPOSTメソッドを使用しているので、あなたは、以下の部分を変更する必要があり

.. $ユーザ名を初期化するために
<!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"; 
} 
?> 
+0

どこから来たユーザー名ですか?これらの通知を避けるには、isset関数を使用してください。 – SuperBear

答えて

3

$ _GETの代わりに$ _REQUESTを使用することもできます。 $ _REQUESTには両方の変数($ _GETと$ _POST)があります

+0

これは正解です。 –

+0

あなたは私の友人がスターです!あなたは+1と受け入れられた答え以外にあなたに感謝する方法がわからない!これに感謝して、すぐに私の問題を解決しました。好奇心の外に$ _REQUESTとはどこにでも使用できますか? –

+0

'username = xxx'パラメータを持たないURLを持つページに行くと、警告が表示されます。 – Barmar

0

感謝:

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

へ:

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

これは未定義の変数警告であり、未定義のインデックスではありません。 – Barmar

+0

しかし、$ユーザ名が定義されていないので、urスクリプトがうまくいかないかもしれません。 – Aamir

+0

これは本当であり、良い見解です(私はDBの変更が正しく行われているとOPがどのように思っているのでしょうか?しかし、実際の問題については尋ねられていません。 –

-2

を忘れてしまったあなたに

+0

そして、同じ問題で、最初の負荷が壊れました。 –

関連する問題