У меня есть PHP-файл, включенный в первую строку моего основного PHP-скрипта следующим образом:PHP: Запустите оператор mysql_query, содержащий строку, но строка содержит строку, заданную во включенном файле, который вызывается до того, как строка установлена
// 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-запросы? Остановите это. ** – Xatenev
@ Xatenev, чтобы хакеры не могли получить доступ к серверу через FTP и, по какой-либо причине, могли видеть инструкции SQL. –
1. Не используйте устаревшие функции mysql_ *. Они устарели с PHP 5.5 и полностью удалены в PHP 7. Вместо этого используйте MySQLi или PDO. 2. Вы широко открыты для [SQL Injections] (http://php.net/manual/en/security.database.sql-injection.php) и должны действительно использовать [Подготовленные утверждения] (http://php.net /manual/en/mysqli.quickstart.prepared-statements.php) вместо объединения ваших запросов, которые могут быть использованы, если вы используете вышеупомянутый MySQLi или PDO. –