0

我正在编写一个 PHP 脚本来将项目添加到购物篮。我的购物篮表有用户 ID、产品 ID、会话 ID、注释和其他一些字段。某些字段可以为空。例如:

如果有人没有登录,那么我会将他们的会话 ID 存储在表中,如果他们登录,则添加他们的用户 ID,这样我就有一种永久的方式将表中的项目与用户匹配。如果是,我将添加用户 ID。当涉及到 INSERT 查询时,我可以这样做:

$add_sql = "插入 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 回答