PHP图片上传中的变量定义错误
我只是一个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图片上传中的变量定义错误,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
$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)不起作用。谢谢你,它起作用了。但是我现在得到的不是未定义的变量错误,而是未定义的索引错误!有什么建议吗?请在问题中粘贴完整的错误。