DB レコードに一致する一意の URL 変数を生成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1065631

質問

次のような URL 変数を生成できるようにしたいと考えています。

http://example.com/195yq
http://example.com/195yp
http://example.com/195yg
http://example.com/195yf

変数は MySQL レコード セットと一致するため、それを取り出すことができます。そのレコード セットの作成時に、このキーを作成したいと考えています。

これどうやってするの?これを行うための最良の方法は何ですか?利用できる既存のクラスはありますか?

皆さんありがとう

役に立ちましたか?

解決

基本的に、あなたはいくつかの種類のハッシュ関数が必要です。

これは、SHA-1関数、MD5関数(altCogitoとして)、または録音中に、それをコードしている他のデータを使用してすることができる。

どのように多くのレコードあなたが持っているだろうと思いますか?ハッシュ関数はあなたによくカバーするのに十分な大きさが、大きすぎるなければならないとあなたが必要以上に大きく、データベースを作成してソリューションを選択するには注意してください。 Iは、SHA-1を使用し、64または32ビットに切り捨て、必要に応じてきた。

また、RESTを見てください。 URLはとても神秘的でなければならないかもしれないことを考えてみましょう...

他のヒント

これは、いくつかの方法で非常に簡単に行うことができます。

  • 次のようなハッシュを使用します。 MD5. 。(長くなるでしょう)
  • Base-64 特定の ID またはデータをエンコードする

MySQL レコードを使用してこれを行うものがすでにあるかどうかを尋ねる場合は、設計上、データは概念的に Web サイトの URL から実際に非常に遠く離れているため、何かが見つかるかどうかはわかりません。 Grails のようなフレームワークでも。ほとんどの企業は、フロントエンド機能とデータアクセス機能を 1 つの部分にまとめようとさえしません。

は、どのような文脈では、これを使用することになりますか?理由だけではなく、ポスト変数を渡しませんか?それははるかに安全かつ端正です。あなたはまだ、このようなID = 195yqとしてURLに数を達成し、php.iniファイルを設定することで、それらを非表示にする方法があります。

私はこれがあなたに助けになることを願ってます。

は、このことを覚えておいてください。あなたがアドレスバーに変数を渡すときに、誰かが変数を変更することが容易で、アクセス情報は、あなたは彼らがアクセスすることを望まないかもしれません。

あなたはベース64数値の主キーをコードしているように、

あなたが与えた例では、それが見えます。それは私がそれを行うだろうし、過去にそれを行っている方法ですが、私はベース64復号化が簡単ですので、それは明らかにIDを渡すよりも良くだかわからない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top