0

自動インクリメントするメッセージ テーブルがあり、自動インクリメント ID 番号をキャプチャして、ランダムに生成されたコードと共に保存できるようにしたいだけです。次に、このコードを使用してページ全体を吐き出します。たとえば、ユーザーが新しいメッセージを更新したばかりで、自動インクリメント メッセージ ID が 429 であるとします。その 429 を保存し、最後に 5 桁のコードを追加して、メッセージが 429 ID を自動的に取得できるようにしたいと考えています。列に 429mUwIz のようなコードの識別子があります。

次に、そのコードを取得して特定のメッセージを表示する公開ページを作成します。したがって、www.example.com/429mUwIz にアクセスすると、入力されたメッセージが表示されます。ユーザーが直接 www.example.com/1 や www.example.com/2 にアクセスしてシステムを悪用できないように、ランダム化された 5 つのジェネレーターが明らかに必要です。

では、そのようなコードを作成する最善の方法は何でしょうか。挿入と共に ID を保存する必要があるため、mysql_insert_id が機能しないことはわかっています。

添付されているのは、パスがそのようなシステムをどのように作成したかを正確に示す例です。それが役立つ場合、彼らの手紙も大文字と小文字が区別されます。

https://path.com/p/2BTxys

ありがとう。

編集:このランダムな5つのキーコードも作成する最良の方法は何ですか. ごめん。

4

2 に答える 2

2

あなたはそれを照会することができます

$r = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
$row = mysql_fetch_array($r);
$Auto_increment = $row['Auto_increment'];

これにより、次の自動インクリメント ID が取得されます ... SHOW TABLE STATUS のドキュメントはこちら

そして、5文字のランダムな文字列を生成するには

$rand = substr(md5(microtime()),rand(0,26),5);

microtime()andを使用md5してハッシュを生成し、ランダムな 5 文字を取得します.....自動インクリメント ID を使用しているため、一意である必要はありません...

于 2012-05-15T15:11:25.023 に答える
0

これを回避できます。つまり、ランダムコードに沿ってAUTO_INCREMENTIDを格納する必要はありません。ランダムコードのみを独自の列に保存し、ユーザーがページを要求したときにそれを確認します。IDとランダムコードが一致しない場合は、ページを表示しないでください。

現時点では、以下を使用してパスをクエリしていると想定できます。

SELECT * FROM Paths WHERE key = '429mUwIz'

ただし、これは次とまったく同じです。

SELECT * FROM Paths WHERE id = '429' AND key = 'mUwIz'

URLからIDとKEYを分割するだけです。これを行うには、すべての数字をID部分、すべての文字をKEY部分と見なします。

于 2012-05-15T15:12:17.063 に答える