1

GET 入力コードの長さを短縮するための簡単な解決策を探しています (私の Web サイトで)。

フォームは JavaScript で処理され、関数を使用して URL 共有がより簡単になります。例: 異なる名前の複数のフォーム入力は単純に変換され、settings=1,0,0,1GET として URL に配置されます。このデータは、入力を使用/再利用するために PHP で分解/分解されます。

ただし、フォームのサイズを考えると、それでもかなり肥大化する可能性があります。同じデータを JavaScript で圧縮し、PHP で解凍して、共有用の URL を大幅に短縮したいと考えています。

TinyUrl を考えてみてください。私はいくつかのグーグルを行いましたが、解決策は私が望むよりも複雑でした.これはデータを隠す試みではなく、単に短くする.

更新: 私が望むより良い例は、次のような長い GET 入力を に変換することsettings=1,1,1,1,1,1,1,1,1,1,1,1,1ですsettings=s8djh

4

3 に答える 3

1

次のように、独自の「短い URL」を作成できます。パラメーターから一意の ID を作成し (md5 ハッシュなど)、ID とパラメーターのペアをデータ ストアに保存します。

データベース、BerkeleyDB のようなキー値ストア、または 2 つの値を格納する noSQL db またはフラット テキスト ファイルを使用できます。

MD5 ハッシュがまだ長すぎる場合は、次の 2 つのオプションがあります。ただし、各パラメーターの組み合わせには、簡単な URL 操作でアクセスできることに注意してください。もう 1 つのオプションは、ランダムな n 文字の文字列 (n は少なくとも >= 4) を作成し、それがデータベースに存在するかどうかを確認することです。存在しない場合は、文字列を ID として使用します。存在する場合は、新しい文字列で 2 ~ 5 回試してください。それらがすべて存在する場合は、n を 1 ずつ増やします。時間が経つにつれて、4 文字の名前空間がいっぱいになり、次に 5 文字の名前空間がいっぱいになります。6 文字の名前空間 (大文字と小文字と数字を使用) では、62^6 の組み合わせが可能です。

コード例については、この紹介記事を参照してください。ハッシュに base62 でエンコードされた MD5 ハッシュを使用するため、通常の 16 進数の 32 文字よりも短くなります。

編集: データ ストアを使用したくない場合は、JavaScript で LZW のような実際の圧縮アルゴリズムを使用すると、同一のパラメーターの長い行が短縮される可能性があります。

于 2013-02-11T13:47:23.843 に答える
0

ある種の固定された「スキーム」を使用して、URL から冗長データを削除できる場合があります。

settings=1,0,0,1 は次のようになります: v=a&s=9

ここで、a はスキームのバージョン (将来変更する必要があり、古い url:s を有効にしておく必要がある場合) であり、s は値です。1,0,0,1 がブール値 (1/0、真/偽) を表す場合、それらはそれぞれ 1 ビットに格納できます。ビットごとに 1 文字を無駄にするのはよくありません。それらをすべて 1 ビットにまとめて、結果を 16 進数で送信します。つまり、1 文字あたり 4 ビットです。

ただし、これにより、何かを変更する必要がある場合、すべてがより複雑になりますが、これはシナリオによって異なります。しかし、それは可能であり、url:s の長さを短縮するための非常に効果的な方法です。

于 2013-02-11T14:32:41.563 に答える
-3

使用する:

http://phpjs.org/functions/base64_encode/

JSで、組み込みのbase64_decodeを介してphpでデコードします

于 2013-02-11T13:49:09.077 に答える