【解決方法】エラー通知のリモート方法: undefined index: uname in C:\xampp\htdocs\phplearn\registration1.php 行 7

プログラミングQA


注意: 未定義のインデックス: uname in C:\xampp\htdocs\phplearn\registration1.php 行 7

注意: 未定義のインデックス: C:\xampp\htdocs\phplearn\registration1.php の行 8 のメール

注意: 未定義のインデックス: 9 行目に C:\xampp\htdocs\phplearn\registration1.php を渡します

私が試したこと:

PHP
  1  <?php
  2  include('connection.php');
  3  //insert code
  4  
  5  if(isset($_REQUEST['add']))
  6  {
  7  	$u =$_REQUEST['uname'];
  8  	$e =$_REQUEST['email'];
  9  	$p =$_REQUEST['pass'];
 10  	$g =$_REQUEST['gender'];
 11  	$h =implode(",",$_REQUEST['chk']);
 12  	$c =$_REQUEST['city'];
 13  	$ad =$_REQUEST['address'];
 14  	$ins = "INSERT INTO tbl_user(uname,email,pass,gender,hobby,city,address) values ('$u','$e','$p','$g','$h','$c','$ad')";
 15  	$ex =$con->query($ins);
 16  }
 17  ?>

解決策 2

見積もり:

注意: 未定義のインデックス: uname in C:\xampp\htdocs\phplearn\registration1.php 行 7
注意: 未定義のインデックス: C:\xampp\htdocs\phplearn\registration1.php の行 8 のメール
注意: 未定義のインデックス: 9 行目に C:\xampp\htdocs\phplearn\registration1.php を渡します

これは、それらのインデックスが変数に存在しないことを意味します $_REQUEST. その理由を知る方法はありません。 あなただけが本当の内容を見ることができます $_REQUEST の助けを借りて デバッガ.

PHP
$ins = "INSERT INTO tbl_user(uname,email,pass,gender,hobby,city,address) values ('$u','$e','$p','$g','$h','$c','$ad')";

あなたの質問に対する解決策ではありませんが、別の問題があります。
文字列を連結して SQL クエリを作成しないでください。 遅かれ早かれ、ユーザー入力でそれを行うことになります。これにより、「SQL インジェクション」と呼ばれる脆弱性への扉が開かれます。これは、データベースにとって危険であり、エラーが発生しやすいものです。
名前に一重引用符があると、プログラムがクラッシュします。 ユーザーが「Brian O’Conner」のような名前を入力すると、アプリがクラッシュする可能性があります。これは SQL インジェクションの脆弱性であり、クラッシュは問題の中で最も少なく、悪意のあるユーザー入力であり、すべての資格情報を含む SQL コマンドに昇格されます。
SQL インジェクション – ウィキペディア[^]
SQL インジェクション[^]
例による SQL インジェクション攻撃[^]
PHP: SQL インジェクション – マニュアル[^]
SQL インジェクション防止チート シート – OWASP[^]
専門用語なしで SQL インジェクションを説明するにはどうすればよいですか? – 情報セキュリティ スタック交換[^]

解決策 1

このエラーを解決するには、このエラーの意味を理解する必要があります。 ここ: 注意: PHP の未定義インデックス エラー[^]

見積もり:

このエラーは、コード内に値が割り当てられていない変数または定数があることを意味します。 しかし、ユーザー フォームから取得した値を PHP コードで使用しようとしている可能性があります。

このエラーは isset() 関数を使用することで回避できます。 この関数は、インデックス変数を使用する前に、値が割り当てられているかどうかをチェックします。

ここで、 unameemailpass 為に isset 使用する前に。 あなたの今後のロジックもそれに依存しているようですので、すべてを調整する必要があります。

アップデート:

コードに関する詳細:
PHP $_REQUEST[^]

見積もり:

PHP $_REQUEST は、HTML フォームを送信した後にデータを収集するために使用される PHP スーパー グローバル変数です。

そのため、リクエストを発行するイベントがない限り、設定されません。 したがって、デフォルトでは、初回は値を保持せず、エラーがスローされます。 使用する isset 共有するとそれが解決します。

コメント

タイトルとURLをコピーしました