У меня есть файл PHP, включенный в первую строку моего основного сценария PHP, как это:
// Include obfusctated MySQL queries
include "../../secure_storage/mysql_queries.php";
// $user_id stores the cookie as a variable. The cookie contains the user ID
$user_id = $_COOKIE['storerun_user_id'];
// Query the database to get the user's account information
$account_query = mysql_query($account_query_sql);
Включенный файл PHP содержит следующую строку кода:
$account_query_sql = "SELECT `first_name`, `last_name`, `email`, `password`, `referral_link`, `street_address`, `floor_apartment_number`, `notes`, `ecocash_number` FROM `users` WHERE `user_id` = '$user_id'";
Причина в том, что я запутываю запросы SQL и помещаю их в каталог, удаленный от корня на сервере.
Проблема заключается в том, что включаемый файл содержит SQL-запрос, содержащий $ user_id, но строка задается только после включения файла. Любые идеи о том, как использовать мои настройки и быть в состоянии запустить mysql_query? Я весь день пытался понять это в моей голове. Конечно, есть способ сделать это.
Дак, я бы не стал беспокоиться о том, чтобы скрыть твои SQL-запросы. Однако, если вы действительно хотите это сделать, можно добавить оператор замены строки непосредственно перед оператором базы данных запросов и отредактировать включенный файл, чтобы использовать ‘search_item’, например:
str_replace('search_item', $user_id, $account_query_sql);
и включенный файл будет определять $ account_query_sql, как показано ниже.
$account_query_sql = "SELECT `first_name`, `last_name`, `email`, `password`, `referral_link`, `street_address`, `floor_apartment_number`, `notes`, `ecocash_number` FROM `users` WHERE `user_id` = 'search_item'";
Просто измените порядок вашего кода:
$user_id = $_COOKIE['storerun_user_id'];
include "../../secure_storage/mysql_queries.php";
PHP не может путешествовать во времени, поэтому ваш код должен выполнять шаги в соответствующем порядке — создать переменные ДО Вы пытаетесь использовать их, а не после.
И обратите внимание, что вы уязвимы для SQL инъекций.