php没有进入foreach循环

时间:2010-03-05 05:30:41

标签: php debugging

我发誓这个剧本昨晚工作正常,但今天无法上班。它不会进入foreach循环,我不知道为什么。即使我选择了一个文件并单击“提交”,$ _FILES数组也为null。

基本上这个脚本有一个文件输入标签并使用jquery,如果用户选择一个文件,它会添加另一个文件输入标签。单击提交按钮时,将调用PHP。

<?php
//used for firePHP
include('PHP/FirePHPCore/fb.php');
ob_start();


$success = false;
$error = "";
$allowable_types = array(
    'image/jpeg',
    'image/pjpeg',
    'image/jpg',
    'image/jpe',
    'image/gif',
    'image/png'
);



#################################################################
//NOT GETTING INSIDE THE FOREACH LOOP. $_FILES array is always null
##################################################################
//loops through the files that the user has chosen to be uploaded them and moves them to the Images/uploaded folder
foreach($_FILES as $key => $value) {
    if(!empty($_FILES[$key])) {
        if($_FILES[$key]['error'] == 0) {
            if(in_array($_FILES[$key]['type'], $allowable_types) && ($_FILES[$key]['size'] < 5000000)) {
                if(!file_exists("Images/uploaded/".$_FILES[$key]['name'])) {
                    move_uploaded_file($_FILES[$key]['tmp_name'], "Images/uploaded/".$_FILES[$key]['name']);
                    $success = true;
                } else {
                    $error = "<h3 class=\"bad\">At least one of the files already exists</h3>";
                }
            } else {
                $error = "<h3 class=\"bad\">At least one of the files you've selected is either too large or not the correct file type</h3>";
            }
        } elseif($_FILES[$key]['error'] == 4) { 

        } else {
            $error = "<h3 class=\"bad\">An error occurred while trying to upload one of the files</h3>";
        }
    } else {
        $error = "<h3 class=\"bad\">You need to select a file</h3>";
    } 
}



?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1205">
<link rel="stylesheet" type="text/css" href="CSS/reset.css" />
<link rel="stylesheet" type="text/css" href="CSS/uploadFile.css" />
<link rel="stylesheet" type="text/css" href="CSS/galleria.css" />
<script type="text/ecmascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="JS/galleria.jquery.js"></script>

<script type="text/javascript"> 


    $(document).ready(function() { 

        var i = 1;

        //gives the first li the class .active so that it shows the large version as if it's been clicked. 
        //-- used for the gallery page
        $('#content ul.gallery li:first-child').addClass('active');

        //fades the links on hover -- used for the nav links
        $('#header ul li a').hover(function() {
            $(this).fadeTo(300, 0.3);
        },function() {
            $(this).fadeTo(300, 1);
        });



            $('input:file:last').live('change',function() {
                var file = $(this).val();
                if(file !== null && file !== "") {
                    if(i < 6) {
                        $(this).after("<input type=\"file\" name=\"uploadedFile"+i+"\" value=\"\" />");
                        i++;
                    }
                }
            });
    }); 
</script>
<meta name="keywords" content="Steph Mcclisch Photography Portfolio Pictures" />
<title>Steph McClish Photography</title>
</head>

<body>
<div id="floater"></div>
<div id="wrapper">

    <div id="content">
        <?php 
        if($success) {
        echo "<h3 class=\"good\">Files Uploaded Successfully!</h3>";
        } elseif ($error) {
        echo $error;
        }
    ?>
        <h4>Choose the files to be uploaded</h4>
        <form action="<?php $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
            <input type="file" name="uploadedFile0" value="" />
            <button type="submit" name="login">Submit</button>
        </form>
        <h5><a href="PHP/Manage.php">Manage Files/Folders</a></h5>
    </div>


</div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

这一切都与我的Wamp服务器设置有关。在菜单栏中的wamp图标我去了php&gt; php setting&gt;文件上传。只需点击一次即可修复所有内容。

答案 1 :(得分:1)

在Windows XP,SP2上,资源管理器有时无法上传没有扩展名的文件。

在这种情况下,

$ _ FILES数组为空。微软称其为安全功能(!)

我们可以提出的唯一解决方案是强制上传文件以获得扩展名。