2011-01-24 9 views
2

私は、www.mypageのようなGETパラメータを使用する単純なPHPスクリプトを使用してデータベースから情報を取得する瞬間、そこに多くの項目を含むデータベースを持っています。 com/post.php?id = 123432PHPの数字の秘密からの文字の作成

まあ最初はすべてうまくいっていましたが、私は非常に大きなID(10000000)を持っていることを知っています。だから、この時点では私は自分のユーザーにはロングURLを持っていないので、ポストスクリプトのID番号をXFBJのように思って、 id = 11223256437などです。どのようにこれを行うための任意のアイデア?ありがとう!

答えて

4

私はあなたがそれを達成するために非常に単純なトリックをすることができると思います。 URLからIDを36ベースの番号として扱い、データベースから取得する前に10ベースの番号に変換します。

$_GET['id'] = '5yc1s'; 
$id = base_convert($_GET['id'], 36, 10); // 10000000 

// SELECT ... FROM ... WHERE id = :id [id = $id] 

そして、あなたは、リンクを表示したいと反対の操作を行います。

$id = 10000000; 
$urlId = base_convert($id, 10, 36); // 5yc1s 

// ...?id=$urlId 

はEDIT:ああ、base_convert()は36の上限(a-z0-9)ではなく、32持っています - あなたのリンクはさらに短くなります。もちろん、62までの数値(a-zA-Z0-9)を変換できる独自の関数を書くことができます。これは妥当な上限です(もちろん、それ以上のものもあります)。このような関数を書くのはとても簡単です。

+1

なぜ32ではなく36ですか?グループから 'WXYZ'を除外する理由は? – ircmaxell

+0

@ircmaxell:なぜ私は 'a-z0-9'セットが32要素長であると思ったのか分かりません。 ;) 一定。 – Crozin

関連する問題