2010-11-27 8 views
0

は、だから私は、フォームとても似てい言います。フォーム、MySQLと値

mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age') ") or die(mysql_error()); 

しかし、私はテーブルに空白のエントリがあります。 htmlコードで名前(例:name = "age")を指定していると、入力値が変数になると仮定して間違っていますか?

答えて

1

$ _POSTグローバル変数で変数にアクセスします。

if(isset($_POST['name']) && isset($_POST['age'])){ 
$name = mysql_real_escape_string($_POST['name']); 
$age = mysql_real_escape_string($_POST['age']); 
mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age') ") or die(mysql_error()); 
} 
+1

これは大きなセキュリティ上の問題であると言うことが重要です。 mysql_real_escape_string(mysql APIを使用)を使用する必要があります。 –

+0

ああ、私もそれに気づいたが、私の答えに置くのを忘れてしまった - 恐怖のSQLインジェクション!ありがとう! –

1

という名前の入力「名前」セキュリティ問題でregister_globalsは有効になっている場合にのみsubmit2.phpにおける変数$名、を作成します。 register_globalsを有効にするべきではありません(PHP6では削除されます)。

デフォルトのmethod属性は何か分かりませんが、$ _GET ['name']または$ _POST ['name']という名前の変数を作成する必要があります。それはそれらのいずれかを作成していない場合は、フォームにmethod属性を追加します。

<form action="submit2.php" method="post"> 

をしかし、これは、これらの変数が存在することを保証するものではありません(自分のフォームを使用せずに、どのような場合に誰かアクセスsubmit2.phpを?) 。あなたはissetか!emptyのどちらかを使う必要があります(空でないかどうかをチェックするので、後者が好きです)。

最後のこと:変数をエスケープすることを忘れないでください。 ユーザー入力を信用しないこの場合、クエリに変数を挿入するので、mysql_real_escape_string関数を使用する必要があります。

1

あなたは、使用可能な値に

 <form action="submit2.php" method="post"> 
      <input name="name" type="text" /> 
      <input name="age" type="text" /> 
      <input type="submit" /> 
     </form> 

と変更データベースのクエリ部分にフォームからデータを変更する必要があります:mysql_real_escape_stringのは、データベースの中に注入するスクリプトを持っていないため、セキュリティを助け

 $name=mysql_real_escape_string($_POST['name']); 
     $age=mysql_real_escape_string($_POST['age']); 
     mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age') ") or die(mysql_error()); 

と誰かにエントリを変更または削除させる。

関連する問題