PHP图片上传中的变量定义错误

PHP图片上传中的变量定义错误,php,html,file-upload,Php,Html,File Upload,我只是一个PHP和服务器端编程的初学者,所以请原谅我这个关于变量的问题。我在读一篇关于上传照片的教程 就像教程中描述的那样,我在理解代码后直接复制并粘贴了代码。然而,在我将PHP插入HTML之后,网页充满了以下错误 注意:在第44行的C:\Program Files(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php中使用未定义的常量大小-假定为“大小” 注意:C:\Program Files中未定义的索引:file\u (x86)\XAMPP\ht

我只是一个PHP和服务器端编程的初学者,所以请原谅我这个关于变量的问题。我在读一篇关于上传照片的教程

就像教程中描述的那样,我在理解代码后直接复制并粘贴了代码。然而,在我将PHP插入HTML之后,网页充满了以下错误

注意:在第44行的C:\Program Files(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php中使用未定义的常量大小-假定为“大小”

注意:C:\Program Files中未定义的索引:file\u (x86)\XAMPP\htdocs\college\u ink\shirtDesign.php,第44行

注意:在中使用未定义的常量file\u up-假定为'file\u up' C:\ProgramFiles(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php on 第45行

注意:在C:\Program中使用未定义的常量名称-假定为'name' 第45行的文件(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php

注意:C:\Program Files中未定义的索引:file\u (x86)\XAMPP\htdocs\college\u ink\shirtDesign.php,第45行

注意:在中使用未定义的常量file\u up-假定为'file\u up' C:\ProgramFiles(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php on 第47行

注意:在C:\Program中使用未定义的常量大小-假定为'size' 第47行的文件(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php

注意:C:\Program Files中未定义的索引:file\u (x86)\XAMPP\htdocs\college\u ink\shirtDesign.php,第47行

注意:在中使用未定义的常量file\u up-假定为'file\u up' C:\ProgramFiles(x86)\XAMPP\htdocs\college\u ink\shirtDesign.php on 第51行

这是PHP代码:

<?Php
    $file_upload="true";
    $file_up_size=$_FILES['file_up'][size];
    echo $_FILES[file_up][name];

    if ($_FILES[file_up][size]>500000){
    $msg=$msg."Uploaded file size more than 500KB<BR>";
    $file_upload="false";}

    if (!($_FILES[file_up][type] =="image/jpeg" OR $_FILES[file_up][type] =="image/png")){
    $msg=$msg."Your uploaded file must be of JPG or PNG.<BR>";
    $file_upload="false";}

    $file_name=$_FILES[file_up][name];
    $add="upload/$file_name"; //the path with the file name

    if($file_upload=="true"){
        if(move_uploaded_file ($_FILES[file_up][tmp_name], $add)){
        //do your coding here to give a thanks message

        }
        else{
            echo "Failed to upload file.";}
            }
    else{
        echo $msg;
        }
    ?>

我已经纠正了变量错误,但是现在我得到了这个错误

注意:C:\Program Files中未定义的索引:file\u (x86)\XAMPP\htdocs\college\u ink\shirtDesign.php,第44行

请引导我完成这项任务。:)

你在哪里

$file_up_size=$_FILES['file_up'][size];
由于缺少美元符号,
size
被解释为a

你想要的是

$file_up_size=$_FILES['file_up']['size'];

问题是你依赖于被解释成这样。通常,在PHP代码中,这被视为一个常量:

echo FOO;
如果不先定义该常数,如下所示:

define('FOO', 'foo');
您将遇到此错误,PHP将其解释为一个空字符串并回显
FOO
。这是一个糟糕的选择。我认为您的意思是使用实际字符串(而不是未定义的常量)作为数组索引:

if ($_FILES['file_up']['size']>500000){
    // etc..
这是推荐的

注意:在的手动输入中包括了裸字符串,特别是在“数组应做和不应做”部分下面(手册中说不要这样做)

这是错误的,但它是有效的。原因是此代码具有 未定义的常量(bar)而不是字符串('bar'-请注意 引用)。PHP将来可能会定义常量,不幸的是 这样的代码,有相同的名称。它之所以能工作,是因为PHP自动运行 转换裸字符串(不对应的无引号字符串 到任何已知符号)转换为包含裸字符串的字符串。对于 实例,如果没有定义名为bar的常量,那么PHP将 替换字符串“bar”并使用它


您应该引用数组键:
$\u FILES['file\u up']['size']
否则,PHP需要一个常量。请考虑“字符串”,而不是“常量”;)您所遵循的,应该被修改或删除。这个
['file\u up']
是一个;而这个
[file\u up]
是一个很好的例子。谢谢,它成功了。但是我现在得到的不是未定义的变量错误,而是未定义的索引错误!有什么建议吗?看起来您可能正在尝试上载一个大于php.ini设置的文件,该设置为
upload\u max\u filesize
post\u max\u size
。如果您试图上载的文件太大,则甚至不会创建
$\u FILES
数组中的索引。在这种情况下,您要检查的常数(500000)不起作用。谢谢你,它起作用了。但是我现在得到的不是未定义的变量错误,而是未定义的索引错误!有什么建议吗?请在问题中粘贴完整的错误。