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

时间:2014-08-25 18:59:33

标签: php html file-upload

我只是PHP和服务器端编程的初学者,请原谅我关于变量的问题。我正在阅读有关上传照片的教程。

(tutorial on plus2net) 和教程中描述的一样,我在理解之后直接复制并粘贴了代码。但是,在将PHP插入HTML后,网页上出现了以下错误。

  

注意:使用未定义的常量大小 - 在第44行的C:\ Program Files(x86)\ XAMPP \ htdocs \ _ college_ink \ shirtDesign.php中假定为'size'

     

注意:未定义的索引:C:\ Program Files中的file_up   第44行(x86)\ XAMPP \ htdocs \ college_ink \ shirtDesign.php

     

注意:使用未定义的常量file_up - 假定为'file_up'   C:\ Program Files(x86)\ XAMPP \ htdocs \ _ college_ink \ shirtDesign.php on   第45行

     

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

     

注意:未定义的索引:C:\ Program Files中的file_up   第45行(x86)\ XAMPP \ htdocs \ college_ink \ shirtDesign.php

     

注意:使用未定义的常量file_up - 假定为'file_up'   C:\ Program Files(x86)\ XAMPP \ htdocs \ _ college_ink \ shirtDesign.php on   第47行

     

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

     

注意:未定义的索引:C:\ Program Files中的file_up   第47行(x86)\ XAMPP \ htdocs \ college_ink \ shirtDesign.php

     

注意:使用未定义的常量file_up - 假定为'file_up'   C:\ Program Files(x86)\ XAMPP \ htdocs \ _ college_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_up   第44行(x86)\ XAMPP \ htdocs \ college_ink \ shirtDesign.php

请指导我完成这个。 :)

2 个答案:

答案 0 :(得分:1)

你在哪里

$file_up_size=$_FILES['file_up'][size];
由于缺少美元符号,

size被解释为constant

你想要的是

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

答案 1 :(得分:0)

问题是你依赖bare strings被解释为这样。通常,在PHP代码中,这被认为是常量:

echo FOO;

如果你没有先定义那个常数,就像这样:

define('FOO', 'foo');

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

if ($_FILES['file_up']['size']>500000){
    // etc..

这是推荐的。

注意:Arrays的手册条目中介绍了裸字符串,特别是阵列的注意事项部分(手册中不要) >这样做。)

  

这是错误的,但它确实有效。原因是这段代码有一个   undefined constant(bar)而不是字符串('bar' - 请注意   引号)。 PHP可能在将来定义常量,不幸的是   这样的代码,具有相同的名称。它的工作原理是因为PHP自动   转换一个裸字符串(一个不相符的不带引号的字符串   将任何已知符号转换为包含裸字符串的字符串。对于   例如,如果没有名为bar的已定义常量,那么PHP将会   替换字符串'bar'并使用它。