0

以下のコードを使用すると、ファイルを時々削除できます。ファイルとフォルダーのアクセス許可を確認しましたが、それらは存在し、適切なアクセス権が付与されています。時々、削除ボタンを押すと、ファイルを削除し、場合によっては単にページを更新しても何も起こりません。リンク解除を正しく機能させるためにできることはありますか?以下のコードに何かが欠けていますか?これはZENDにあります。

public function delimageAction()
{
    $request = $this->getRequest();

    if ($request->isPost()) {
        // Get the image name
        $imageName = $request->getParam('file');

        $old = getcwd();
        chdir(APPLICATION_PATH . "/../public/images/blog/"); // Change directory to the files
        fclose(APPLICATION_PATH . "/../public/images/blog/" . $imageName);

        // Delete it
        unlink(APPLICATION_PATH . "/../public/images/blog/" . $imageName)

        chdir($old); // Return to old directory
    }
    $this->_helper->redirector('blog', 'index');
}
4

2 に答える 2

2

chdir2つの呼び出しは目的を果たさないため削除しfcloseます。これにより、エラーが発生します。エラーログをチェックして、削除が失敗する原因を確認する必要があるだけでなく、アクセス許可に関連している可能性があります。unlinkが機能しない場合はfalseを返す必要があるため、の戻り値を確認することもできます。

コメントで示唆されているように、悪意のあるユーザーがアプリケーション内のファイルを削除できるため、スクリプトには非常に大きなセキュリティホールがあります。指定されたパスがフォルダー内にあることを確認するために、「ファイル」パラメーターをサニタイズする必要がありpublic/images/blog/ます。

于 2012-11-27T10:31:09.287 に答える
0
public function delimageAction()
{
    $request = $this->getRequest();

    if ($request->isPost()) 
    {
        // Get the image name
        $imageName = $request->getParam('file');

        // Delete it
        unlink(APPLICATION_PATH . "/../public/images/blog/" . $imageName)

    }

    $this->_helper->redirector('blog', 'index');
}
于 2015-08-24T18:00:48.407 に答える