gpt4 book ai didi

php mysql adodb

转载 作者:行者123 更新时间:2023-11-29 05:44:02 28 4
gpt4 key购买 nike

我将 PHP 与 adodb 一起使用,但遇到了一个大问题。我正在使用 adodb 来加速开发,所以我可以这样做:

$r["Name"] = $_POST['txtName'];

if ($_POST["ID"] != "")
$conn->AutoExecute("content", $r, 'UPDATE', 'AutoID = ' . $_POST["ID"]);
else
$conn->AutoExecute("content", $r, 'INSERT');

但是,如果该名称中有单引号,它会用斜杠保存到数据库中!因此,如果名称是 Testimonial's,它将另存为 Testimonial\'s,这给我带来了很多问题,无论如何我可以避免这种情况,但仍然像上面那样编程,因为它比准备插入/更新语句快得多。

干杯

最佳答案

这个问题的正确和最终解决方案由两部分组成:

  1. 在您的代码中以编程方式禁用所有magic_quotes。这确保您有一个已知的配置可以使用,如果/当管理员更改这些 php.ini 设置时,该配置不会被破坏。
  2. 在访问数据库之前验证/引用所有传入的用户输入!

虽然第一部分是良好的编程,但第二部分对于编写安全的应用程序绝对必不可少!

要引用用户输入,您可以采用两种方式:

  1. 手动(使用 AdoDB 的 qstrQuote),在这种情况下,您必须非常非常小心,不要遗漏任何内容。这对于小型项目来说非常可行,我过去曾多次这样做。
  2. 使用带有绑定(bind)变量的准备好的语句来进行查询。只要您正确指定变量类型,这将确保您的应用程序中永远不会有 SQL 注入(inject),并且比第一个选项更不容易出错。这就是我一段时间以来一直在做的事情。

更新:

如果您使用准备好的语句,您可能会发现 AdoDB 不会给您带来太多好处,您可以使用 PDO 完成大部分工作。当您需要“自动化”的东西时,您可以自己编写一些特定于该应用程序的函数。根据我的经验,与包含 AdoDB 相比,这只需要多做一些工作,但整体上要好一些。

关于php mysql adodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4267015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com