2

さて、私は自分の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....portion を指します。これが私の既存の接続コードです。提案されたソリューションを統合するにはどうすればよいですか?

<?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 "";
}
?>
4

3 に答える 3

4

localhostあなたのPCで使用される場合は、あなたのPCを意味します

localhost友人の PC で使用する場合は、MYSQL サーバーまたはデータベースを持っていない友人の PC を意味します。

コードでは、ルーターの WAN IP アドレスを使用する必要があります。

これは、ISP から静的 IP アドレスが提供されていることを前提としています。ルーターを再起動するたびに WAN IP アドレスが変更されたり、場合によっては再起動時に変更されたりすると、友人の PC でプログラムを実行すると、データベースを見つけることができなくなります。

次に、ルーターのポート 3306 を MYSQL を実行している PC のポート 3306 に転送します。

MYSQL で新しいユーザー アカウントを作成することを強くお勧めします。このアカウントは、(最も安全な) 友人の PC の IP アドレスからのみ使用でき、この特定のデータベースにのみアクセスできます。次に、そのユーザー アカウントを使用するようにコードを変更し、パスワードをまったく使用しないようにします。root

または、任意の IP アドレスから使用できるが、この 1 つのデータベースへのアクセスのみが許可される MYSQL アカウントを作成します。

ルーターの開いているポート 3306 はハッカーによってすぐに発見されるため、パスワードが強力であることを確認してください。

于 2016-06-30T08:01:15.747 に答える
-1

windows/system32/drivers/etc/hosts add にホスト ローカル ホストを作成します。

127.0.0.1 ローカルホスト ::1 ローカルホスト

于 2016-06-30T08:06:00.913 に答える