Uploadify Dosyayı indirmek için bir link e-posta olması

2 Cevap php

Uploadify web sitenizde bir katına (veya tek) dosya yükleme kolay entegrasyon sağlayan bir jQuery eklentisi. Bu Flash ve herhangi bir arka uç geliştirme dili gerektirir. Seçenekleri bir dizi gelişmiş kullanıcılar için tam özelleştirme için izin, ancak temel uygulama bile kodlama acemiler bunu böylece kolaydır.

Ben sadece Uploadify e-posta bildirimi wioth yüklenmiş olan bir dosyanın bir bağlantı gönderir mümkün olup olmadığını sormak istedim.

İşte uploadify.php için kodu:

<?php
if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    // $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
    // $fileTypes  = str_replace(';','|',$fileTypes);
    // $typesArray = split('\|',$fileTypes);
    // $fileParts  = pathinfo($_FILES['Filedata']['name']);

    // if (in_array($fileParts['extension'],$typesArray)) {
        // Uncomment the following line if you want to make the directory if it doesn't exist
        // mkdir(str_replace('//','/',$targetPath), 0755, true);

        move_uploaded_file($tempFile,$targetFile);
        echo "1";
    // } else {
    //  echo 'Invalid file type.';
    // }
}

//define the receiver of the email
$to = 'admin@admin.com';
//define the subject of the email
$subject = 'Test email';
//define the message to be sent. Each line should be separated with \n
$message = "Hello World!\n\nThis is my first mail.";
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

2 Cevap

Script dosya çarpışmalar açıktır. Siz kullanıcı tarafından sağlanan orijinal adını kullanarak yüklenen sensin. Aynı dosya birden fazla kullanıldığında ise, yenisi ile önceki sürümlerin üzerine olacak.

Yanı sıra, körü körüne yükleme depolamak için bir konum belirlemek için bir form değeri kullanarak ediyoruz. Birisi belirtir ne olur ".. /.. /.. /.. /.. /.. /.. /.. /.. / Etc" dosya için klasör ve "passwd" için? Ya ve "ntoskrnl.exe" Windows sunucu "../../../../../../../../windows/system32" mi? Web sunucusu yanlış olarak üzerinde çalıştığı ne kullanıcı kimliği için, sadece tam bir uzaktan uzlaşmaya makineyi açtım eğer. Ama onlar sistemini tehlikeye istemiyorsanız bile, kolaylıkla sitenizin kök doküman içinde herhangi bir dosyayı çöp mümkün olacak.

Doğrudan dosya indirmek için bir bağlantı gömmek istiyorsanız, bir HTML biçimli e-posta oluşturmak zorunda, ya da posta istemcisi URL'ler gibi görünüyor oto-Linkify metin can umut edeceğiz, dedi sonra. mail() fonksiyonu ile kullanım için bina HTML postalar ciddi bir ağrıdır. Benim projeler için PHPMailer kullanın. Bu güzel çalışır ve size istediğiniz e-postanın her türlü oluşturmak için olanak sağlar.

Gibi bir şey:

<?PHP
$fileURL = 'http://' . $_SERVER['HTTP_HOST'] . $_REQUEST['folder'] . '/' . $_FILES['Filedata']['name'];

// ...

$message = "You can download the file from: {$fileURL}";

// ...
$mail_sent = @mail( $to, $subject, $message, $headers );
//...