-3

これを機能させるのに問題があります。ユーザーがフォームのテキスト フィールドに HTML タグまたは PHP タグを追加した場合、それらがデータベースに追加されないことを確認したいと思います。私が今持っているコードは、strip_tags を HTML および PHP タグと共にデータベースに追加します。

これが私のコードです:

    <?php
      //Check for Valid Email
function valid_email($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}


    //Add people Information to Database 
function addToDB ($sql, $con) {
require 'db.php';

    $sql= ("INSERT INTO people (name,email) VALUES(
            'strip_tags($_POST[name])', 
           '($_POST[email])')");

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }


mysql_close($con);
}

    //Add vehicle Information to Database
function addToDB1 ($sql, $con) {
require 'db.php';

$sql="INSERT INTO vehicle (year, make, model, color)
VALUES
('$_POST[year]','$_POST[make]', '$_POST[model]', '$_POST[color]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }


mysql_close($con);
}

?>
4

1 に答える 1

3

二重引用符で囲まれた文字列で変数を表示する場合のように、文字列内で関数を呼び出すことはできません!

したがって、クエリは次のようにする必要があります。

$sql= 'INSERT INTO people (name,email) VALUES(\''.strip_tags($_POST[name]).'\', \''.$_POST[email].'\')';

ところで、post/get 変数からの入力データをエスケープすることを検討する必要があります。何かのようなもの:

$sql= 'INSERT INTO people (name,email) VALUES(\''.mysql_real_escape_string(strip_tags($_POST[name])).'\', \''.$_POST[email].'\')';

ただし、最良の代替手段は、SQL インジェクションを防ぐために準備済みステートメントを使用することです。


Eidt : 文字列内で変数を操作している場合は、($_POST[email]) ではなく {$_POST[email]} を使用して、変数名の一貫性を維持してください。

于 2012-11-19T00:11:11.373 に答える