簡體   English   中英

php上傳腳本將上傳3個文件,但僅上傳1個或2個時會發生奇怪的事情

[英]php upload script will upload 3 files but does odd things when only uploading 1 or 2

我是php的新手,我的腳本可以很好地運行3個文件,但是在上載時加載1個或2個文件會產生奇怪的結果,並且我不確定需要進行哪些更改才能使其正常工作。 有人有想法么?

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();

$full_path = $_SERVER['DOCUMENT_ROOT'];
$folder = '/main_html/upload/';

$upload_max_size = ini_get('upload_max_filesize');
$post_max_filesize = ini_get('post_max_filesize');

// boundary  
$time = md5(time());  
$boundary = "==Multipart_Boundary_x{$time}x"; 
$myfile = basename($_FILES['fileupload']['name']);
$myfile2 = basename($_FILES['fileupload2']['name']);
$myfile3 = basename($_FILES['fileupload3']['name']);

//echo $myfile;
$taille_maxi = 8000 * 1024;
$taille = filesize($_FILES['fileupload']['tmp_name']);
$taille2 = filesize($_FILES['fileupload2']['tmp_name']);
$taille3 = filesize($_FILES['fileupload3']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['fileupload']['name'], '.');
$extension2 = strrchr($_FILES['fileupload2']['name'], '.');
$extension3 = strrchr($_FILES['fileupload3']['name'], '.');
//Début des vérifications de sécurité...
if (!isset($_FILES['fileupload']['name']) && !in_array($extension, $extensions))//Si l'extension n'est pas dans le tableau
{
    $erreur = 'file upload1 only file type png, gif, jpg, jpeg is accepted';
}
if (!isset($_FILES['fileupload2']['name']) && !in_array($extension2, $extensions))//Si l'extension n'est pas dans le tableau
{
    $erreur = 'only file type png, gif, jpg, jpeg is accepted';
}
if (!isset($_FILES['fileupload3']['name']) && !in_array($extension3, $extensions))//Si l'extension n'est pas dans le tableau
{
    $erreur = 'only file type png, gif, jpg, jpeg is accepted';
}
if ($taille > $taille_maxi) {
    $erreur = 'file upload 1: file size is too big ...';
}
if ($taille2 > $taille_maxi) {
    $erreur = 'file upload 2: file size is too big ...';
}
if ($taille3 > $taille_maxi) {
    $erreur = 'file upload 3: file size is too big ...';
}
if (!isset($erreur))//S'il n'y a pas d'erreur, on upload
{
    //On formate le nom du myfile ici...
    $myfile = strtr($myfile, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $myfile = preg_replace('/([^.a-z0-9]+)/i', '-', $myfile);

    $myfile2 = strtr($myfile2, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $myfile2 = preg_replace('/([^.a-z0-9]+)/i', '-', $myfile2);

    $myfile3 = strtr($myfile3, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $myfile3 = preg_replace('/([^.a-z0-9]+)/i', '-', $myfile3);

    if (move_uploaded_file($_FILES['fileupload']['tmp_name'], $full_path . $folder . $myfile) || move_uploaded_file($_FILES['fileupload2']['tmp_name'], $full_path . $folder . $myfile2) || move_uploaded_file($_FILES['fileupload3']['tmp_name'], $full_path . $folder . $myfile3))  //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {

        $message = "Name: " . $_POST["name"] . "\nAddress: " . $_POST["address1"] . "\nCity: " . $_POST["city"] . "\nState: " . $_POST["state"] . "\nCountry: " . $_POST["country"];
        $message .= "\nZip : " . $_POST["zip"] . "\nHome Phone: " . $_POST["home_phone"] . "\nEmail: " . $_POST["email"];
        $message .= "\n\nEntry A Title: " . $_POST["entry_a_title"] . "\nEntry A Image Size: " . $_POST["entry_a_image_size"] . "\nEntry A Image Frame: " . $_POST["entry_a_image_frame"] . "\nEntry A Price: " . $_POST["entry_a_price"];
        $message .= "\nEntry A Filename: $myfile";
        $message .= "\n\nEntry B Title: " . $_POST["entry_b_title"] . "\nEntry B Image Size: " . $_POST["entry_b_image_size"] . "\nEntry B Image Frame: " . $_POST["entry_b_image_frame"] . "\nEntry B Price: " . $_POST["entry_b_price"];
        $message .= "\nEntry B Filename: $myfile";
        $message .= "\n\nEntry C Title: " . $_POST["entry_c_title"] . "\nEntry C Image Size: " . $_POST["entry_c_image_size"] . "\nEntry C Image Frame: " . $_POST["entry_c_image_frame"] . "\nEntry C Price: " . $_POST["entry_c_price"];
        $message .= "\nEntry C Filename: $myfile";
        $message .= "\n\nDelivery: " . $_POST["delivery"] . "\n ";
        $message .= "\nMembership Status: " . $_POST["Membership_status"] . "\nPayment Method: " . $_POST["Payment_Method"] . "\n\nDate: " . date("d/m/Y") . "\nTime: " . date('h:i:s A') . "\n ";

        $message .= "\n\nNOTE: If all images are not received please email";
        //$message .= "\n Form used = " . $_POST['formused'];
        //$message .= $tasktag;
        //$message .= "\n\nUploaded file 1: $myfile";
        //$message .= "\nUploaded file 1 location: $folder $myfile";
        //$message .= "\nUploaded file 2: $myfile2";
        //$message .= "\nUploaded file 2 location: $folder $myfile2";
        //$message .= "\nUploaded file 3: $myfile3";
        //$message .= "\nUploaded file 3 location: $folder $myfile3";

        //$message .= "\n\nPHP Max upload size: $upload_max_size";
        //$message .= "\n\nPHP Max post file size: $post_max_filesize";
        $message .= "\n\n$full_path";


        $boundary = "_" . md5(uniqid(rand()));

        $attached_file = file_get_contents($full_path . $folder . $myfile);
        //file name ie: ./image.jpg
        $attached_file = chunk_split(base64_encode($attached_file));

        $attached_file2 = file_get_contents($full_path . $folder . $myfile2);
        //file name ie: ./image.jpg
        $attached_file2 = chunk_split(base64_encode($attached_file2));

        $attached_file3 = file_get_contents($full_path . $folder . $myfile3);
        //file name ie: ./image.jpg
        $attached_file3 = chunk_split(base64_encode($attached_file3));

        //$attached = "\n\n". "--";

        if (file_get_contents($full_path . $folder . $myfile)) {
            $attached = "\n\n" . "--" . $boundary . "\nContent-Type: application/octet-stream; name=\"$myfile\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"$myfile\"\r\n\n" . $attached_file . "--" . $boundary . "--" . "\n\n";
            $headers = "From: " . $_POST["email"] . " \r\n";
            $headers .= "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"$boundary\"\r\n";

            $body = "--" . $boundary . "\nContent-Type: text/plain; charset=ISO-8859-1\r\n\n" . $message . $attached;

            if ($_POST['subject'] == "National Show"){
                $email = 'email@gmail.com';  
            }
            else {
                $email = 'email@gmail.com';
            }

            $subject = $_POST['name'] . " with Entry A";

            @mail($email, $subject, $body, $headers);

        }
        if (file_get_contents($full_path . $folder . $myfile2)) {
            $attached = "\n\n" . "--" . $boundary . "\nContent-Type: applicatio/octet-streamn; name=\"$myfile2\"\r\nContent-Disposition: attachment; filename=\"$myfile2\"\r\nContent-Transfer-Encoding: base64\r\n\n" . $attached_file2 . "--" . $boundary . "--" . "\n\n";

            $headers = "From: " . $_POST["email"] . " \r\n";
            $headers .= "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"$boundary\"\r\n";

            $body = "--" . $boundary . "\nContent-Type: text/plain; charset=ISO-8859-1\r\n\n" . $message . $attached;

            if ($_POST['subject'] == "National Show"){
                $email = 'email@gmail.com';  
            }
            else {
                $email = 'email@gmail.com';
            }

            $subject = $_POST['name'] . " with Entry B";

            @mail($email, $subject, $body, $headers);

        }
        if (file_get_contents($full_path . $folder . $myfile3)) {
            $attached = "\n\n" . "--" . $boundary . "\nContent-Type: application/octet-stream; name=\"$myfile3\"\r\nContent-Transfer-Encoding: base64\r\nContent-Disposition: attachment; filename=\"$myfile3\"\r\n\n" . $attached_file3 . "--" . $boundary . "--" . "\n\n";

            $headers = "From: " . $_POST["email"] . " \r\n";
            $headers .= "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"$boundary\"\r\n";

            $body = "--" . $boundary . "\nContent-Type: text/plain; charset=ISO-8859-1\r\n\n" . $message . $attached;

            if ($_POST['subject'] == "National Show"){
                $email = 'email@gmail.com';  
            }
            else {
                $email = 'email@gmail.com';
            }

            $subject = $_POST['name'] . " with Entry C";

            // @mail($email,$subject,$body,$headers)
            if (@mail($email, $subject, $body, $headers)) {
                if ($_POST['subject'] == "National Show")
                    header('Location: http://www.example.com/page_2.htm');
                else
                    header('Location: http://www.example.com/page_3.htm');
                //echo 'E-MAIL SEND WITH ATTACHMENT';

            }
        }
        //$attached .= "\n\n". "--" . $boundary . "--";

        //$attached .= "--" . "\n\n";

    } else
    {
        echo 'UPLOAD ERROR !';
    }
} else {
    echo $erreur;
}
?>

您遇到了這個問題,因為您僅在處理第三文件的第三if子句中提到了header('location')

-因為在處理第一個和第二個文件內容的if子句中缺少此內容。請將重定向代碼(header('<targetLocation>'))到第三個if塊之外。

使即使在處理第一個或第二個文件時,也可以訪問此重定向調用。

快樂編碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM