Bir görüntü etiketi Bunları kullanmak için, onlar web kök dışında dosya sistemi, genellikle başka bir yerde olduğundan, web kök içinde bir yerde, ilgili geçici dosyaları saklamak için ihtiyacınız olacak, ve bu yol için çıktı istemiyorum kullanıcı, hem faydasız olacak gibi (bir img etiketi, o yolu harita olamaz), ve kötü güvenlik (sizin dosya sistemi hakkında bilgi veriyor edilmiştir.)
Sen (a) (pahalı) webroot bir noktaya her dosya kopyalarken veya b) web kök içindeki geçici bir klasöre yüklenen tüm dosyaları koymak için yapılandırma değiştirerek bunu yapabilirsiniz büyük güvenlik etkileri).
Keep security in mind while you are planning this out...
Tıpkı diğer geçici dosyaları güvenliği konusunda dikkatli olun. Bu uygulamanın bu kısmı ile ilgili sadece olanları web kök içinde saklanır emin olun. Eğer birileri diğer dosyalara erişimi hesaplamak ve diğer yüklenen verileri web (hatta çok kısa bir süre için) kullanılabilir çünkü çapraz kullanıcı veri ihlali çeşit için izin için yeterli bilgi verdik bulmak istemiyorum kökü.
This may be a better way:
, Geçici adı kapmak şekilde onu karartmak, bir bekçi dosyaya geçecek bir yoluna eklemek ve bunun yerine göndermek için belki de daha iyi bir çözüm olacaktır.
Gibi bir şey
/images/path/to/gatekeeper.png?name=[obfuscated file name here]
Daha sonra emin bekçisi ekleyerek, yerine bir png dosyası daha bir php dosyası olarak kabul edilir hale getirmek için / images / yol / / .htaccess kullanabilirsiniz:
<Files gatekeeper.png>
ForceType application/x-httpd-php
</Files>
Şimdi, bekçi, dosya adını un-bullak temp yoldan çekin, ve, kullanıcıya herhangi bir şey ortaya gerçek dosya taşıma veya yapılandırma değiştirmeden gönderebilirsiniz.
Daha sonra yenilemek ve dosya (neredeyse kesin olacak) hareket etmesi halinde, sadece kırık bir görüntü olacak, çünkü sadece, sen dosya kalıcı beklemeyin emin olun. Belki bekçisi ile varlığını denetlemek ve bulunamadı değil eğer onlara bir "dosya artık mevcut" görüntü vermek. Ayrıca bekçi düzeyinde sadece görüntü dosyaları veya diğer güvenlik konularında gönderme zorlayabilir.
Siz böylece bekçisini yapabilirsiniz (muhtemelen ... yayınlanmaz, bellekten yazdığınız, ve vb hataları, eksik değerlerin, hiçbir kullanımı vardır, ama bir başlangıç noktası olarak kullanmak mümkün olmalıdır):
<?php
// This is all inside gatekeeper.png, which is just a .php file with a .png extension
// It's not very good code, just an example to point you in the right direction.
// Specify this will be a png file for the browser...
header("content-type: image/png");
//Read the file name from the $_GET and un-obfuscate it.
$file = "/path/to/temp/directory/outside/file/root/that/we/hopefully/have/access/to/";
$file .= $_GET["name"];
// Check that the file exists, and send a "not found" image if not.
// http://us.php.net/manual/en/function.file-exists.php
if (!file_exists($file)) {etc...}
// Read the image file, send it to the user, and close it...
// http://us.php.net/manual/en/function.imagepng.php
$im = imagecreatefrompng($file);
imagepng($im);
imagedestroy($im);
die();
?>