0

下の画像をご覧ください。私の質問に関連するコンテキストが表示されます。

ここに画像の説明を入力

この Web サイトは、才能のある写真家が写真をアップロードして、他の人が撮ったものを見ることができるサイトです。

設計上の問題が原因で、仕事に打ちのめされました。

ユーザー (登録不要) は、私の Web サイトを開いて、名前、モバイル、説明、画像 (同じユーザーが異なる画像をアップロードできます) などの詳細をアップロードできます。ここで、携帯電話番号は必須フィールドです。そのため、写真をアップロードしているときに、携帯電話番号 + FileName.jpg を追加します。画像はサーバー内のフォルダー内に保存され、携帯番号、説明、名前などの残りの詳細は MYSQL データベース内に保存されます。 . (これは一部であり、完成品です)

2 番目の部分は、ページの起動時です。そのフォルダーからすべての画像 (最新の 20 固定) を取得し、ページに表示しています。

したがって、ユーザーが特定の画像をクリックすると、 Desc 、 Name などの詳細を表示する必要があるため、その画像の onclick イベントで、クリックされた画像から携帯電話番号を取得し、データベースで検索します. (ここで問題があります) つまり、同じユーザー (つまり、同じ携帯電話番号) が別の写真を Web サイトにアップロードできるため、携帯電話番号を使用して検索すると多くの結果が得られます。

画像名の形式は 83746787695iokI.jpg です。

私はどんな形式でも変更する準備ができているので、これを解決する方法を教えてください

4

2 に答える 2

2

ファイル名83746787695iokI.jpgを指定すると、アップローダーの電話番号と元のファイル名を解析して、それらの値を使用して写真のテーブルをクエリできます。そのための正規表現は次のようになります。

/^([0-9]{11})(.+)\.jpg$/

そうは言っても、各写真に一意の識別子を割り当て、それを使用して保存したファイルに名前を付けることを検討する必要があります. MySQL の id カラムは次のようになります。

id INT NOT NULL AUTO_INCREMENT

挿入後、(MySQL で) 新しい行の ID を取得し、LAST_INSERT_ID()その名前でファイルを保存します#{id}.jpg

自動インクリメントされた ID は予測可能な整数であり、ファイル名は 、 などであることに注意してください1.jpg2.jpg単純なスクリプトを使用して、サーバーからすべての画像をダウンロードできます。これを避けるには、代わりにランダムに生成された一意の文字列 (UUID など) を使用してファイルに名前を付けます。その文字列をテーブルの新しい列に保存し、それを使用して写真を識別します。

于 2012-04-23T05:40:51.037 に答える
0

別の主キーを使用できるということです。自動番号フィールドを使用するか、データベースに画像を保存するときにタイムスタンプを使用できます:)

設計のために、 http://www.dynamicdrive.com/に行くことをお勧めします

よろしくレッド

于 2012-04-23T03:54:41.980 に答える