0

ショッピング バスケットに商品を追加するための PHP スクリプトを作成しています。私のショッピング バスケット テーブルには、ユーザー ID、製品 ID、セッション ID、メモ、その他いくつかのフィールドがあります。一部のフィールドは空白にすることができます。例えば:

誰かがサインインしていない場合は、セッション ID をテーブルに保存し、サインインしている場合はユーザー ID を追加して、テーブル内の項目をユーザーに永続的に一致させる方法を提供します。そうであれば、ユーザー ID を追加します。INSERT クエリに関しては、次のようなことができますか。

$add_sql = "INSERT into sessionBasket (userid) VALUES ( '". isset($_SESSION["userid"]) ? $_SESSION["userid"] : "") ."'";

人々がサインインしているかどうか、アイテムにメモがあるかどうかなど、変数のチェックと分岐にかかる時間を大幅に節約できます。

4

1 に答える 1

1

うわぁ!SQLインジェクション!データベース全体を失う可能性があります

SQL挿入の準備済みステートメントを確認する必要があります。

mysqli インターフェイスを使用する必要がありますが、次のようになります。

$statement = $db_connection->prepare("insert into ... VALUES(?)");
$statement->bind_param("id", $sid);
$statement->execute();

これにより、SQL インジェクション攻撃を防ぐことができます。

最低限、文字列をエスケープする必要があります。

$sid = isset($_SESSION[userid]) ? mysql_real_escape_string($_SESSION[userid])) : '';
$add_sql = "insert into ... values($sid)";
于 2009-08-26T23:12:43.710 に答える