PHP 是一种服务器端语言。这意味着当请求的页面被发送回客户端时,所有 PHP 代码都被解析并“删除”。只要您是唯一能够查看您的文件的人,就没有恐惧。
是否将其存储在 (env) 变量中不会有任何区别。
这段代码绝对没有错;)
编辑:
但是,当您执行 SQL 查询时,您需要小心。通常,您使用用户输入(URL 或 POST 数据)来设置查询中的某些值。例如:
$sql = 'SELECT * FROM `table` WHERE `id`=' . $_GET['id'];
$_GET['id'] 变量在 URL (index.php?id=4) 中设置。
如果他们将值 4 更改为一些 SQL 查询,他们几乎可以对您的数据库执行任何操作。这称为SQL injection。这确实是使用数据库的 Web 应用程序的最大威胁。
有多个修复。
- 清理输入(确保输入不包含 SQL 语法)
- 准备报表
现在,我不熟悉 PostgreSQL,但显然 PHP 模块有能力发送准备好的语句。这使您可以将带有未知值的查询作为问号发送,然后再发送这些值。
$sql = 'SELECT * FROM `table` WHERE `id`=?';
// send prepared statement
$value = $_GET['id'];
// send the value
这样数据库可以判断该值是没有查询。
就像我说的,我对 PostgreSQL 并不熟悉,但我相信有一些教程可以指导你一路走好!
另一个编辑:
因为我是个好人,所以我找到了方法!您需要使用函数pg_prepare() 和pg_execute()。像这样:
// This is a name to allow the database to identify the prepared statement
$queryname = 'my_query';
// Setting up our query with "empty" values
$sql = "SELECT * FROM `table` WHERE `column`='$1' AND `column`='$2'";
// Setting our values to send afterwards
$values = array(
$_GET['first_value'], // The first value that will replace $1
$_GET['second_value'] // The second value that will replace $2
);
$result = pg_prepare($connection, $queryname, $sql); // Send the query to the database
$result = pg_execute($connection, $queryname, array($value)); // Send the values
最后一次编辑(我发誓):
如果您决定将配置变量放在外部文件中,比如说 configuration.php,请确保该文件以 .php 扩展名结尾。如果您使用不同的扩展程序,人们可能能够找到它并以纯文本形式查看它。如果使用 PHP 扩展,他们将无法看到任何内容,因为就像我说的,PHP 已被解析并删除。