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