Dosya adları kaldırmak alanlarda apache

3 Cevap php

1.Hi, ben bir dizine dosyaları yükler sadece dosya bir dahili kullanım yükleme komut dosyası var. Böylece bir e-posta bağlantısını öldürme adına bir boşluk yüklenenler 1.zip Ben örnek yani adında bir spcace ile benim bilgisayardan bir şey yüklediğinizde. O onun yükledi apache boşluğu kaldırmak yapmak ya da bir çizgi yapmak mümkün mü?

Yaşıyorum İkinci sorun nasıl bu bağlantıyı e-postanın gövde amd e-anything Addy olarak dosyanın url ile bir e-posta bağlantısını yapmak için ayrıştırma nedir?

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $_FILES['file']['name'])) {
    // uploaded file was moved and renamed succesfuly. Display a message.
    echo "Link: " . "http://example.org/" . $_FILES["file"]["name"];

3 Cevap

Deneyin:

$filename = $_FILES['file']['name'];
$filename = preg_replace("/[^a-zA-Z0-9]/", "", $filename);

//then
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $filename)) {

// uploaded file was moved and renamed succesfuly. Display a message.
echo "Link: " . "http://example.org/" . $filename;

Bir yan not olarak: Eğer aynı isimde iki dosya yüklenir durumunda ne oluyor, kullandığınız koduyla? Eğer bir çek (gibi "is there a file that already has that name in $uploaddir ") yapmazsanız ikinci dosyayı ilk yerini alacaktır.

Yani istediğiniz bir şey olmayabilir ... değil mi?

Eğer, (potansiyel) problemi çözmek için bir çözüm her zaman isimleri you kontrolü ile, yüklenen dosyaları yeniden adlandırmak için. (A simple counter would probably to the trick)

Başka bir şey: $_FILES["file"]["name"] gibi, muhtemelen kimse isterim ne içeren için sahte olabilir, istemci tarafından gönderilen, ve. O "../../index.php" gibi bir şey içeriyorsa (or something like this - you get the idea), bu birileri sunucu üzerinde istediğiniz herhangi bir dosyayı koymak için izin verebilir.

Bunu önlemek için, hedef olarak kullanılan dosya adı / yolu move_uploaded_file "tehlikeli" bir şey içermediğinden emin olun konuşulmalıdır. Çözeltisi kullanmak olabilir basename . (see, for instance, example #2 on POST method uploads)

Ayrıca yüklenen dosyanın mimetype kontrol etmek isteyebilirsiniz, bu nedenle örneğin, yürütülebilir alamadım - ve yüklenen emin dosyaları web sunucusu tarafından yürütülebilir değildir yapmalıdır.