PHP - это серверный язык. Это означает, что когда запрашиваемая страница отправляется обратно клиенту, весь код PHP анализируется и «удаляется». Пока вы единственный, кто может просматривать ваши файлы, страха нет.
Независимо от того, храните ли вы его в переменных (env) или нет, разница не будет.
В этом коде нет ничего плохого;)
Edit:
Однако, когда вы выполняете SQL-запрос, вы должны быть осторожны. Часто вы используете пользовательский ввод (URL или данные POST) для установки определенных значений в запросе. Например:
$sql = 'SELECT * FROM `table` WHERE `id`=' . $_GET['id'];
В URL установлена переменная $_GET['id']
(index.php?id=4
).
Если они изменят значение 4
на небольшой запрос SQL, они могут практически все сделать с вашей базой данных. Это называется SQL-инъекция . Это действительно самая большая угроза для веб-приложений, использующих базу данных.
Есть несколько исправлений.
- Очистить входные данные (убедитесь, что входные данные не содержат синтаксис 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 анализируется и удаляется.