2010-04-12 67 views
1

Uploadify是一個jQuery插件,允許輕鬆集成多(或單)在您的網站上傳文件。它需要Flash和任何後端開發語言。一組選項允許高級用戶完全自定義,但基本實現非常簡單,即使編碼新手也可以完成。有Uploadify電子郵件中的鏈接下載文件

我想問問,如果有可能發出剛剛上傳wioth Uploadify的電子郵件通知文件的鏈接。

這裏是uploadify.php代碼:

<?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 = '[email protected]'; 
//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: [email protected]\r\nReply-To: [email protected]"; 
//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"; 
?> 

回答

0

您的腳本很容易受到碰撞名。您是使用用戶提供的原始名稱上傳的。如果多次使用相同的文件名,則會用新文件覆蓋以前的版本。

而且,你盲目使用表單值,指定存儲上載的位置。會發生什麼,如果有人指定文件夾「../../../../../../../../../etc」和‘passwd文件’的文件名?或Windows Server」 ../../../../../../../../windows/system32" 和 「ntoskrnl.exe中」 嗎?如果Web服務器的錯誤配置來運行它的哪些用戶ID,您剛剛打開機器完整的遠程妥協。但即使他們不想讓系統受到影響,他們也可以輕鬆地清除網站文檔根目錄中的任何文件。

話雖如此,如果你想嵌入一個鏈接直接下載文件,你將不得不建立一個HTML格式的電子郵件,或希望郵件客戶端可以自動鏈接看起來像URLs的文本。構建用於mail()函數的HTML郵件是一件非常痛苦的事情。我爲我的項目使用PHPMailer。它很好地工作,並允許您創建任何類型的電子郵件,你想。

0

喜歡的東西:

<?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); 
//... 
+0

是的,但我該如何實現它我真的不擅長於PHP – 2010-04-12 20:30:18

+1

對不起。我不打算爲您編寫完整的解決方案!我的提示應該指出你正確的方向! – timdev 2010-04-12 20:42:29

+0

明白......謝謝 – 2010-04-13 14:42:47

相關問題