0

PHP と MySQL を使用した Web フロント エンドを使用して、基本的な IP 管理ソリューションを作成しようとしています。PHP や MySQL にはあまり詳しくありませんが、次のことが可能かどうかを知りたいです。

ユーザーが HTML フォームを使用してデータベースに新しいサブネット範囲 (例: 192.168.1.0/24) を挿入すると、別の作成テーブル (例: ip_addresses) がトリガーされ、テーブルにサブネット範囲が自動入力される可能性があります。 (例: 192.168.1.1、1.2、1.3 など)。

あいまいすぎる場合はお詫びします - ありがとう

4

2 に答える 2

2

あなたが求めていることを行うことは可能ですが、私はそれをお勧めしません. MySQL では、ドット付きクワッドとしての文字列表現ではなく、長い整数として IP アドレスを格納するのが一般的です。MySQL は 2 つの関数とINET_ATON()、それに対応INET_NTOA()する IP アドレスを長整数に変換する関数を提供します。

私が推奨する構造は、サブネットの開始と終了の整数表現を格納することです。そうすれば、必要に応じて、エンドポイント間に存在するアドレスを照会することが可能になります。また、不完全なサブネットを保存することもできます。

MySQL ドキュメントから:

mysql> SELECT INET_ATON('10.0.5.9');
        -> 167773449
mysql> SELECT INET_NTOA(167773449);
        -> '10.0.5.9'

次のようなステートメントでクエリを実行できます。

SELECT * ipRanges WHERE INET_ATON('192.168.1.99') BETWEEN startIpNum AND endIpNum;
于 2011-10-10T12:36:42.970 に答える
0

トリガーを使用してそれを行うことができます。

CREATE
    TRIGGER new_range INSERT
    ON ip_range FOR EACH ROW BEGIN ... END

そして、特定の IP アドレスを管理するロジックを、「...」ではなく BEGIN ... END 内の範囲に入れます。

ここを見てください: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html - これがどのように機能するかの詳細について。

于 2011-10-10T12:34:50.353 に答える