我只是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
请指导我完成这个。 :)
答案 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'并使用它。