2012-02-26 16 views
1

私は、ユーザーがテキストファイルを追加できるようにする非常に小さなWebアプリケーション(PHPを使用したい)を持っていたいと思います。編集して保存してください。複数のファイル管理をユーザーに対してどのように管理できますか?

私は100人のユーザーがいて、それらはすべて "myFile.txt"ファイルをアップロードします - どのファイルを別の場所に保存するかを管理して、 ?

myFile_randomness010101010.txtのような乱数を添付する必要がありますか?そのため、どのファイルが誰に属しているのかわかりますか? とは何ですか?彼らが変更したものをダウンロードしたいときには、この番号を外すだけです。どのファイルが誰につながっているかをどのように知ることができますか?

どのようにそれが動作しない..しかし、私はどのように正確に知っていない -

は、私は答えはクッキーとは何かを持っていると思いますか?どこから始めますか? ありがとう、 アロン

答えて

1

本当にまっすぐです。時間と可能な一意のID(おそらく単純uniqid())を追加します。時間を読めるようにしたくない場合は、それをハッシュすることを検討してください。

あなたが心配する主なことは、ファイルを元に戻すことです。元の名前とテンパーされた名前の両方をデータベースに格納するだけです。つまり、フロントエンドに元の名前を表示できますが、ユニークな名前で作業することができます。

他の解決策はそれほど耐えないものではありません。たとえば、ユーザーのSIDを追加することはできますが、ユーザーが別のセッションでファイルを取得しないことを意味します(他のユーザーが自分自身を取得するためにユーザーのSIDを編集する可能性があります)。

0

これまで私が行ってきたことは、ファイルをデータベース内のファイルのIDという名前のフォルダに保存することでした。その方法で元のファイル名は保持され、フォルダ名は比較的短くなります。フォルダ内の唯一のファイルが探しているものであるため、技術的にID以外のものをデータベースに保存する必要はありません。

0

クッキーが機能します。ランダムなハッシュを作成し、PHPのset_cookie()を使用して、自分のコンピュータにハッシュを保存しておき、訪問者がページに来たときにクッキーを呼び出します。

$fileName=($_COOKIE['your_cookie_name']) ? $_COOKIE['your_cookie_name'].'.txt' : 'myFile.txt'; 
0

ユーザーごとに新しいディレクトリを作成するだけで、ユーザーIDなどのデータベースレコードの固有の名前に基づいて名前を付けます。

ファイルを新しい場所に移動すると、そのファイルを/ files/$ userid /などに移動します。

次に、ファイルにアクセスするには、img src = "files/$ userid/filename"と同じことを行います。 (これらはアクセス権を与えられたか、ユーザーIDを知っている場合を除き)

ないクロスオーバー、誰か他の人からの上書きのないチャンス、他のユーザーは

1

はい、あなたはクッキーについて正しいファイルにアクセスすることはできません。これはSessionを使用して実装できます。 PHPセッションはクッキーを使用します。

単純なアプローチ:

//uploadbegin.php or login.php etc 
session_start(); 

//validate user logon and 
$_SESSION['USERNAME'] = <user name> 

以下はファイルアップロードの一部を処理します。

//fileupload.php 

session_start(); //start the session.. 

$user = $_SESSION['USERNAME']; 

$content = //get the contents of the file received by HTTP Post to a file or a database. 

$rand = //some random number 

$fileName = "$user/file$rand"; 

//this file may be inside a directory named after the user or something like that. 
file_put_contents($fileName, $content); 

//add this filename and path to the database along with the $user. 

は今、ファイルの内容を取得するため、いくつかのHTML編集可能なコントロールにコンテンツを吐き出す、ファイルパスを取得し、(ユーザーがログオンまたはそのような何かの後)$_SESSION変数を確認してください。

HTH

関連する問題