0

ユーザーがアップロードした画像を削除できるようにしていますが、画像の名前を変更することで、他のユーザーに属する画像を簡単に削除できます。

画像を削除するための以下の作業コード... ユーザー画像は、たとえばユーザー名のプレフィックスを使用して取得され、ユーザーはjoe/some_image.jpgチェックボックスを使用して削除する画像を選択します。

//images to be deleted
$images = array("joe/angry_robot.jpg", "joe/baby_with_mustache.jpg");

//create multidimensional array to use in class
foreach($images as $key => $value)
{
    $array[] = array(
        'key' => $value
    );
}

$this->load->library('awslib');

//initiate the class
$s3 = new AmazonS3();

$bucket = 'my_bucket';

$response = $s3->delete_objects ($bucket, array(
    'objects' => $array
));

// Success?
var_dump($response->isOK());

バケット内のオブジェクトを安全に削除するために S3 で利用できるソリューションは何ですか? ある種のユーザー認証方法を探しています。

4

1 に答える 1

1

各ユーザーが所有するファイルのリストを維持します。

class User
{
  // yourproperties

  // array of owned images
  private $images;

  public function addImage($image)
  {
      $this->images[] = $image;
  }

  public function ownsImage($image)
  {
      return in_array($image, $this->images);
  }

  public function removeImage($image)
  {
      if( ( $key = array_search($image, $this->images) ) !== false ) { 
          unset($this->images[$key]);
          return true;
      }
      return false;
  }
}

次に.... if( $user->ownsImage($imageToDelete) ) { // proceed } else { // not authorized }

永続化を処理する方法で、その配列をデータベースにマップします。

または、アプリケーション内で別の方法で実行してください。エンドユーザーの承認は、S3 によって処理されるべきではありません。

于 2012-09-18T03:19:03.617 に答える