2

ディレクトリ パス '/uploads/files' があります。ユーザーが登録するとき、パスの最後に user_id を追加して「uploads/files/user_id」にして、各ユーザーがアップロードする独自のアップロードフォルダーを持つようにしています。私は Laravel を使用しており、現在のコードは次のようになります...

mkdir("uploads/files/" . Auth::user()->id);

これは新しいフォルダを作成する適切な方法ですか? 私はそれをさまざまな方法で試してきましたが、何も機能しないようです。

4

2 に答える 2

3

mkdir行く方法です。ただし、これを機能させるには、Linux のアクセス許可を正しく設定する必要があることに注意してください。著作権があることを確認してください。で確認できますis_writable($dirPath)。アクセス許可を、755またはアプリケーションに最適と思われるものに設定します。

以下のような Linux 構文を使用することもできます...より複雑な操作に便利です。

 $path = '/uploads/files/user_id_dir';
 shell_exec("mkdir -p $path");
于 2012-12-21T06:08:20.967 に答える
1

ディレクトリに簡単にアクセスして推測できるようにしたくない場合は、user_id のハッシュを実行してから追加することができます。これは単純なケースとしては問題ありません。しかし、セキュリティの観点からは、これは脅威になる可能性があります。

md5()またはsha1()をランダムな複雑な文字列とともに使用saltして、ディレクトリを安全に保ち、推測されないようにします。

もう1つ、これをif条件の中に入れて、フォルダーが既に作成されているかどうかを確認します。

$path = 'path_to_your_directory';
if(!file_exists($path)
{
     //then create the directory
}
else
{
    //do the upload here
}

編集: を使用している場合Auth::user()->id、ユーザーはサイトにログインする必要があります。つまり、セッションが存在する必要があります。それ以外の場合は機能しません。あなたはそれを知っていると思います。

于 2012-12-21T06:10:03.133 に答える