1

車両のリストを含むデータベースがあります。最初の 3 つの列は、AJAX を使用して連鎖オプション値を入力するために使用されます。これらの 3 つのメニューにより、私の Web サイトで特定の車両を選択できます。この車両ルックアップをサード パーティの Web サイトで利用できるようにするかどうか尋ねられました。3 層メニューを使用して、サード パーティのサイトで $_POST データとして小さな爆発可能な文字列を返すことを意図しています。

これを達成するための最良の方法は何ですか? リモート接続を有効にすることはできますが、それを十分に保護する方法を知る前にそうすることに慎重です。

これがばかげているように見える場合は申し訳ありません!localhost 以外の接続はまだ使用していません。

前もって感謝します、

ジョー

4

3 に答える 3

5

サード パーティにあなたのデータベースへのアクセスを許可する理由がわかりません。

かなり少量のパブリック アクセス可能なデータを提供したいと考えているように見えるので、自分のサイトに XML または JSON 形式でデータを返す URL を用意するだけで、彼らが望むことは何でもできます。

これにより当面の要件が解決され、必要に応じてこれをより複雑なサービスに発展させることができます。


データを JSON 形式で返すために使用できる簡単な PHP を次に示します。SQL をデータベースに合わせたものに置き換えます。

$sth = mysql_query("select m.make, l.model, i.count from makes m, models l, inventory i where i.makeid = makeid and i.modelid = l.modelid");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows[] = $r;
}
print json_encode($rows);

重要な注意: このコードは単純ですが、第三者からの入力を受け入れたい場合には適していません。たとえば、在庫があるフォードの数を照会できるようにしたい場合は、たとえばPDOを使用して、準備済みのステートメントが必要です。

$stmt = $pdo->prepare("select i.count from makes m, inventory i where i.makeid = makeid and make = :make");    
$stmt->execute(array(':make' => $make));
于 2012-07-26T14:42:49.537 に答える
3

個人的には、データベースの前に API を配置し、そのサービスを公開します。データベースを外部に公開することには常に注意を払っているからです。

ただし、データが個人を特定できない、または重要でない場合。そうすれば、誰かがあなたのデータベースにアクセスできるようになります。

最善の方法は、サード パーティ用に新しいユーザーを作成し、必要なアクセス許可のみをそのユーザーに付与することです (つまり、アクセスが必要なデータベースとテーブルのみ、および必要な操作 (SELECT、UPDATE など) のみ)。

もう 1 つ注意すべき点は、標準の MySQL インストールは localhost でのみバインドされるため、これには MySQL の my.ini 構成ファイルへの変更も必要になる可能性があることです。

于 2012-07-26T14:39:31.803 に答える
2

私の見方では、いくつかの選択肢があります。

  1. OpenVPNやSSHトンネルなどを使用して、2つのサーバー間にトンネルを作成し、MySQLリモート接続が通過できるようにします(パブリックインターフェイスで聞くことは絶対にしないでください)。しかし、私は第三者のためにこれをしません。

  2. 2つのサーバー間の相互作用のためのWebサービスを作成します。これを行う場合は、「展開可能な文字列」の代わりにXMLやJSONなどの既知のデータシリアル化方法を使用する必要があります。これにより、結果を解析するための移植性が向上し、コードの記述が少なくなります。

于 2012-07-26T14:41:27.657 に答える