0

私は、(潜在的な従業員の)参照が独自​​の参照レターをアップロードできるようにする非常に単純なアプリケーションを作成しています。仕組みは次のとおりです。

  • 申請者は参照メールを送信します
  • 参照は、一意のURLを含む自動生成された電子メールを受け取ります (セキュリティ上の理由から)
  • 参照はリンクをたどり、セキュリティの質問に答えます (サイトに複数回アクセスしたい場合)
  • 手紙をアップロード

私は、完全にランダムな URL を生成する方法に行き詰まっています。さらに、リンクをたどると参照先が正しいページに移動することを確認するにはどうすればよいですか? ランダムな URL を送信するたびに、ドロップ ボックスを含む新しいページを作成する必要がありますか?

これについての提案をありがとう:)

4

4 に答える 4

1

ファイルの内容から一意のようなチェックサムを生成するハッシュアルゴリズムを使用してみてください。通常(たとえばmd5())元のコンテンツを1バイト変更すると、ハッシュが完全に異なります。(注意: md5にはいくつかの衝突の脆弱性があります。)

アップロードしたファイルをハッシュのファイル名で保存すると、後日取得できるようになりますが、より複雑なシステムの場合は、ランダムなURLと保存されたコンテンツを関連付けるデータベースを設定する必要があります。 。

ハッシュしたくない場合は、以下のコードスニペットがランダムなURLの生成に役立つ可能性があります(ただし、URLがすでに使用されている場合は、誤って上書きしないようにしてください)。

md5( sha1( time() + rand(0, time()) ) );
于 2012-08-08T13:06:15.280 に答える
1

ランダムな URL を生成したいということは、基本的にはランダムな文字列を生成するように求めているのだと思います。これは潜在的に非常に単純です。ここにいくつかの擬似コードがあります:

for i = 1 to stringLength
    randomString[i] = floor(random() * 26) + 'a'
end

つまり、0 から 25 までの乱数を生成し、それを文字 'a' の ASCII 値に追加します。これにより、小文字のランダムな文字列が生成されますが、これで十分だと思います。PHP では、rand関数を使用します。指定されたリンクの最後の例のように、 srand関数を使用して乱数ジェネレーターに現在の時刻をシードすることをお勧めします。

第二部は; 単純化することをお勧めします。ランダムな URL で実際のページを生成するのではなく、次のようなクエリ文字列にランダムな文字列を単純に渡してはどうでしょうか。

www.mydomain.com/uploadReference.php?id=xxxxxxx

xxxxxxx はランダムな文字列です。次に、文字列を検証し、PHP を使用してデータベースで検索できます。これは、あなたの目的のために、はるかに簡単な方法のようです。

于 2012-08-08T13:14:24.720 に答える
0

現在のタイムスタンプの何らかの形式のハッシュまたは参照の一意の資格情報(ユーザー名など)に基づいて、一意の文字列を作成できます。次に、URL内のその一意の文字列を受け入れるドロップボックス用の1つのページを作成して、データベース内のその文字列によってマップされた関連データを取得するページ上のスクリプトに使用できます。

于 2012-08-08T13:06:48.087 に答える
0

数字と文字のランダムな順列を作成して、

hash($previous) // is unique

基本的な考え方は、「ハッシュ」関数は以前の値のみに依存し、新しい一意の値を作成するというものです。たとえば、'0' -> '1'、'1' -> '2'、'9' -> 'a'、'z' -> '10'、'z0' -> '11' のようになります。このようなアルゴリズムは比較的簡単に考案できます

于 2012-08-08T14:11:49.007 に答える