ダウンロードカウンターをコーディングしていますが、バッファー (ここでは readfile で送信されたファイル) がサーバーによって完全に送信され、クライアントによって受信された後にコードを実行できるかどうかを知りたいです。ファイルを直接転送しているため (XHR や FileSystem JavaScript API を使用していないため)、クライアント側の言語は使用できないことに注意してください。
それは何らかの方法で実行可能ですか?
ありがとう!
バッファ (ここでは readfile で送信されたファイル) がサーバーによって完全に送信された後にコードを実行することが可能
はい....
<?php
readfile($_GET['i_am_so_vuln']);
print "whoops!";
……そんなに大変だった?
そしてクライアントが受け取る
いいえ-それはいつではないからです。介在するネットワーク上の複数のポイントでバッファリングされる可能性があります。(またはキャッシュされていることさえあります)。
ユーザーがダウンロードしているファイルであれば、何もできないと思いますecho
。私はちょうどテストしました。ファイルが要求され、終了し、ブラウザーに何も出力されませんでした。これはブラウザに依存する可能性があることに注意することが重要です。
ただし、レコードをデータベースに挿入/更新したり、ログ ファイルを保存しようとすると、機能します。
ですから、できることもできないこともあると思います。