12

誰かが私を助けてくれるのではないかと思います。

ユーザーがアップロードした画像をギャラリー形式で表示できるこのページをまとめました。

各画像に削除機能を追加したいと考えています。ボタンとその背後にある Javascript を作成しましたが、「ボタンのクリック」とファイルの実際の物理的な削除をリンクする方法が本当にわかりません。

画像はデータベースに保存されていませんが、サーバー上の 2 つのフォルダーの場所にあり、次の構造になっています。

UploadedFiles/username/locationid/imagename

UploadedFiles/username/locationid/Thumbnails/imagename

私は比較的 PHP に不慣れで、知識の限界に達していますが、学ぶ意欲は確かにあります。私が読んだドキュメントから、unlinkメソッドが使用する正しいコマンドであると言うのは正しいと思いますか?

しかし、私が本当に難しいと感じているのは、コードに、現在のものと一致する および フォルダーを含むフォルダーusernameを見つけてから、 name 変数と一致するファイルを削除するように指示することです。locationidusernamelocationid$source

私は、誰かがおそらく私がこれをどのように進めるかについて何らかのガイダンスを提供できるかどうか疑問に思っていました.

多くの感謝と親切な敬意

4

2 に答える 2

7

ユーザー名、locationid、およびimagename変数をスクリプトに渡すことができる場合は、次を使用してファイルを削除できますunlink()

$path = 'UploadedFiles/' . $username . '/' . $locationid . '/';

unlink( $path . $imagename );
unlink( $path . 'Thumbnails/' . $imagename );

ファイルシステムを操作しているので、変数を確実にサニタイズする必要があります(誰かが../../../を使用してファイルシステムの不要な部分にアクセスするのを防ぎます)。

$username = str_replace( array( '..', '/', '\\', ':' ), '', $username );
$imagename = str_replace( array( '..', '/', '\\', ':' ), '', $imagename );
$locationid= str_replace( array( '..', '/', '\\', ':' ), '', $locationid );
于 2012-05-08T13:22:59.423 に答える
0

明らかに、JavaScript (クライアント側) は URL (サーバー側) を呼び出して、ユーザーが選択した画像を削除する必要があります。今のところは静的に行うことをお勧めします (後でもっと動的なものに移行したい場合は、ajax に変換する手順をかなり小さくします。

Set Sail Media が言ったように、削除ボタンをクリックするときに、ユーザー名と locationID をサーバーに渡す必要があります。それを行う1つの方法は次のとおりです。

ギャラリーを HTML/javascript でレンダリングする場合、画像ごとに、必要な情報を含む がその下にあり、送信ボタンは単にサーバーから削除スクリプトを呼び出します。実行できるフォームの例は次のとおりです。

    <form name="deleteImageX" method="GET" target="your.server.org/deleteImage.php">
        <input type="hidden" name="userName" value="theUserNameAssociatedWithThePicture" />
        <input type="hidden" name="locationId" value="locationOfThePicture" />
        <input type="submit" value="delete"/>
    </form>

このフォームは、必要な値を隠しフィールドに保存します。このフィールドは Web ページには表示されませんが、送信ボタンを押すとサーバーに送信されます。

(ちょっとした話ですが、ここで使用されるメソッドは GET です。これは、AFAIK HTML が DELETE メソッドをサポートしていないためです(この場合はこれが適切でした)。

GET メソッドはスクリプト "your.server.org/deleteImage.php" を呼び出します。このスクリプトでは、$_GET['username'] および $_GET['locationId'] 変数を使用して、画像を削除するために必要なすべての情報 (username/locationId) を取得します。次に、前述のように、 unlink メソッドを使用して実際にサーバーからファイルを削除する必要があります。

最後に、これが完了したら、php スクリプトをリダイレクトして、画像を削除した後にギャラリーを再度表示する必要があります (たとえば)。これは、何らかのテンプレート エンジンがある場合はスクリプトを呼び出すか、php の「ヘッダー」関数を呼び出すことで実行できます。

この流れがあなたの期待通りであったことを願っています。

よろしく、

クマ

于 2012-05-08T13:41:52.077 に答える