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应用程序的最大威胁。
有多个修复程序。
现在,我不熟悉的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将被解析并删除。
您可以通过点击答案左侧的V来接受一个(!)答案。它会让人们有动力回答你未来的问题。所以,请选择最好的答案。 – 2012-02-22 14:48:35