【发布时间】:2017-08-04 09:31:31
【问题描述】:
我目前正在我的网站上工作,并为大多数 sql 查询设置了以下设置
if (!mysqli_query($con,"UPDATE table SET column='$value'WHERE id='$id'"))
{ echo("error: " . mysqli_error($con)); }
工作正常,但经过反思,我认为回显错误是个坏主意。我在数百个文件中多次使用这种方法,所以我询问是否有一种简单的方法可以纠正这个问题,而无需手动访问每个文件,也是记录错误的最佳方法。
将其插入另一个表格、文本文件还是忽略它更好?如果是这样,我可以举一个例子来说明如何去做。
非常感谢。
【问题讨论】:
-
为其维护一个
log表或名为error_log的文本文件,或为其使用try和catch结构。这确实是一种不好的做法。 -
我们无法告诉您如何处理错误记录,因为这完全取决于您如何处理您的网站以及您有哪些选项可以恢复和检查它们。因此,这将是关于意见的。但是,将技术错误输出回显给用户并不是一个明智的选择。
-
你知道什么是一个非常非常非常糟糕的主意吗?像您一样将变量放入查询中。我认为它们会受到用户输入的影响?因此,您的代码非常容易受到 SQL 注入的攻击,并且您的数据库可以在几秒钟内被黑客入侵而不会出现问题。查看bobby-tables.com 以了解 SQL 注入以及如何防止它们。他们在那里提供了关于如何使用准备好的语句以及如何使您的代码安全的非常好的示例。现在我永远不会对你的代码进行有效的处理,这是一个非常高的风险。
-
不幸的是,如果您开始手动显示错误,您将不得不手动重构每个文件。此外,如果您的最终用户不是开发人员,那么显示确切的数据库错误是一个巨大的安全漏洞。想想像
an error occured while processing your request这样的一般错误。