Итак, я пытаюсь преобразовать мою программу php / файлы php в вывод .exe, чтобы он мог запускать любой, кому я передаю файл, где бы они ни находились. Это прекрасно работает на моем конце. Однако, когда мой друг запустил тот же самый файл .exe на своем собственном компьютере, произошла ошибка, сообщающая, что он не может подключиться к моей базе данных. Я хочу, чтобы он получил доступ к программе без необходимости загружать дополнительное программное обеспечение и прочее. Я попытался прочитать некоторые возможные решения, и я нашел кое-что, что предлагает мне включить это в мой код подключения к базе данных. Они также использовали Server2go, чтобы заставить его работать:
<?php
// ExeOutput for PHP: MySQL sample using the WAMP package Server2Go
// By default, Server2go comes with a sample database. Root admin is not password-protected.
$mysqlusername = "root";
$mysqlpass = "";
// Do not modify the following lines
$mysqlport = getenv('S2G_MYSQL_PORT');
$mysqlhost = "localhost:".$mysqlport;
// We verify that our ExeOutput application was started by Server2go, otherwise, the MySQL server may not have started.
if (empty($mysqlport)) die("This application cannot be started directly. Programmers: please use the Server2go EXE file, it will start this application automatically.");
?>
Дело в том, что я не уверен, как правильно интегрировать его в код подключения, который у меня есть на данный момент. Ошибка всегда относится к части $ conn = mysqli_connect …. Вот мой существующий код подключения. Как мне интегрировать предложенное решение?
<?php
function db_connect()
{
$host = "localhost";
$user = "root";
$password = "";
$database = "csv_db";
$conn = mysqli_connect($host, $user, $password, $database);
if ($conn == FALSE)
{
echo "Error: Unable to connect to the database!";
return NULL;
}
return $conn;
}function db_disconnect($conn)
{
mysqli_close($conn);
return;
}function checkUserAccessCookie()
{
/* Check if the user has the "userAccess" cookie (set during login) */
if (isset($_COOKIE["userAccess"]))
{
return true;
}
return false;
}function getDefaultUserFromCookie()
{
/* If the user has been here before, then a cookie named "userLogin"* with the user's username will be available. */
if (isset($_COOKIE["userLogin"]))
{
return $_COOKIE["userLogin"];
}
/* If the cookie does not exist, then return blank instead */
return "";
}
?>
localhost
при использовании на вашем ПК означает ваш ПК
localhost
при использовании на ПК ваших друзей означает ПК ваших друзей у кого нет сервера MYSQL или вашей базы данных
Вы должны будете использовать WAN IP-адрес вашего маршрутизатора в коде.
Это предполагает, что ваш провайдер дал вам статический IP-адрес. Если ваш WAN IP-адрес изменяется при каждой перезагрузке маршрутизатора или даже время от времени при перезагрузке, тогда, когда это произойдет, ваша программа при запуске на компьютере друзей не сможет найти вашу базу данных.
Затем перенесите порт пересылки 3306 в вашем маршрутизаторе на порт 3306 на вашем ПК с MYSQL.
Я настоятельно рекомендую вам создать новую учетную запись пользователя в MYSQL, которую разрешено использовать только с (наиболее безопасного) IP-адреса вашего компьютера друзей и который имеет доступ только к этой конкретной базе данных. Затем измените код, чтобы использовать эту учетную запись пользователя и не root
без пароля, это серьезно глупо и является серьезным вектором атаки даже для самого нового хакера в городе
Или создайте учетную запись MYSQL, которую можно использовать с любого IP-адреса, но также разрешен доступ только к этой базе данных.
Убедитесь, что пароль надежный, поскольку открытый порт 3306 на вашем маршрутизаторе очень скоро будет обнаружен хакерами.
Решение s2g работает путем чтения переменной среды, которой, вероятно, не будет на вашем компьютере друзей. Поэтому этот метод требует от него установки / настройки. Если вы хотите избежать этого, лучше всего пойти на то, чтобы реализовать небольшую независимую вселенную sql в одном файле или, по крайней мере, в вашем приложении; sqlite идеально подходит для этого.
Создайте хост local hosts в windows / system32 / drivers / etc / hosts add
127.0.0.1 localhost
:: 1 localhost