Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php move#u uploaded_file()函数不';引用其他页面时无法工作_Php - Fatal编程技术网

Php move#u uploaded_file()函数不';引用其他页面时无法工作

Php move#u uploaded_file()函数不';引用其他页面时无法工作,php,Php,我在将move_upload_file()函数引用到其他页面时遇到问题。它工作正常,没有任何错误。但问题是所选文件未传输到指定目录 我不知道是什么问题,非常感谢您的帮助或建议 代码如下: 第1页(正在进行输入): 它将代码带到另一个页面“conf_news.php”,其中我引用了存储文件的部分内容: 第2页: $PicMessage=”“; $PicName=addslashes($_FILES[“file”][“name”]); $PicType=addslashes($_FILES['f

我在将move_upload_file()函数引用到其他页面时遇到问题。它工作正常,没有任何错误。但问题是所选文件未传输到指定目录

我不知道是什么问题,非常感谢您的帮助或建议

代码如下:

第1页(正在进行输入):


它将代码带到另一个页面“conf_news.php”,其中我引用了存储文件的部分内容: 第2页:

$PicMessage=”“;
$PicName=addslashes($_FILES[“file”][“name”]);
$PicType=addslashes($_FILES['file']['type']);
$PicSize=addslashes($_FILES['file']['size']);
$PicError=addslashes($_FILES[“file”][“error”]);
$PicTempName=addslashes($_FILES[“file”][“tmp_name”]);
$allowedExt=array('jpeg','jpg','gif','png');
$a=分解(“.”,$PicName);
$extension=end($a);未结算(a美元);
如果(($PicType==“图像/gif”)
||($PicType==“图像/png”)
||($PicType==“图像/jpeg”)
||($PicType==“图像/jpg”)
&&($PicSize>100)
&&在数组中($extensions,$allowedExt))){
如果($PicError>0){
$PicMessage=“错误类型:“..$PicError.”
”; } 否则{ echo“上传:.$PicName.”
; echo“Type:.$PicType.
”; 回声“大小:”($PicSize/1024)。“Kb
”; echo“存储在:.$PicTempName中; 如果(文件_存在(“../photos/”$PicName)){ $PicMessage=“文件已存在”; } 否则{ 移动上传的文件($PicTempName,“../photos/”$PicName); $PicMessage=“存储在:“..”./photos/”$PicName; } } } 否则{ $PicMessage=“无效的文件类型”; }
图片消息显示文件已传输,但ptohos文件夹为空。我真的想不出哪里出了问题


非常感谢所有愿意花时间帮助我的人。

请尝试验证该文件是否已通过POST请求上传,因为正如该功能手册中所述:
move\u uploaded\u file()通过只允许移动通过PHP上传的文件来确保此操作的安全。
您可以使用函数
is\u upload\u file()
验证文件是否通过PHP上传。这将告诉您该文件是否能够与
move\u upload\u file()
一起使用

将您的
else
语句替换为:

else if(is_uploaded_file($PicName)) {
  move_uploaded_file($PicTempName, "../photos/". $PicName);
  $PicMessage = "Stored in: ". "../photos/". $PicName;
}

好的,我发现问题了


在数组中($extensions,$allowedExt)){将其更改为$extension。这是一个小错误,但足以延迟我们的工作。还要删除add\u slashes()并重试。

检查move\u uploaded\u file()返回的内容我应该将其放置在哪里?当然,您应该添加调试语句(例如
echo“is_uploaded_file()此处返回true!”;
或类似内容)来测试代码中实际发生的情况。“我应该将is_uploaded_file()函数放在哪里?”这是一个PHP函数,只需调用它即可。是的,您是正确的is_uploaded_文件(0表示没有要移动的文件。在这种情况下,您建议怎么做?如果(是上传的文件($PicTempName)){move_上传的文件($PicTempName,../photos/“$PicName);$PicMessage=“YES”}否则{$PicMessage=“NO”;也删除添加斜杠()请注意,如果不转义文件名,就会打开潜在的安全漏洞。如果
add\u slashes()
给您带来问题,请找到另一种方法来缓解此问题。我认为mysql\u real\u escape\u string()可以。此外,您还必须指定最大上载大小限制。目前您只有最小大小限制($PicSize>100)。添加最大大小限制,如($PicSize)
     $PicMessage = "";
    $PicName = addslashes( $_FILES["file"]["name"] );
    $PicType = addslashes( $_FILES['file']['type'] );
    $PicSize = addslashes( $_FILES['file']['size'] );
    $PicError = addslashes( $_FILES["file"]["error"] );
    $PicTempName = addslashes( $_FILES["file"]["tmp_name"] );

$allowedExt = array('jpeg', 'jpg', 'gif', 'png');
$a = explode(".", $PicName);
$extension = end($a); unset($a);

if((($PicType == "image/gif") 
|| ($PicType == "image/png") 
|| ($PicType == "image/jpeg")
|| ($PicType == "image/jpg") 
&& ($PicSize > 100)
&& in_array($extentions, $allowedExt))){

   if($PicError > 0){
       $PicMessage = "Error Type: ". $PicError. "<br />";
   }

    else{
       echo "Upload: ". $PicName. "<br />";
       echo "Type: ". $PicType. "<br />";
       echo "Size: ". ($PicSize / 1024). " Kb<br />";
       echo "Stored in: ". $PicTempName;


       if(file_exists("../photos/". $PicName)){
          $PicMessage = "File Already Exists";
       }

       else{
           move_uploaded_file($PicTempName, "../photos/". $PicName);
           $PicMessage = "Stored in: ". "../photos/". $PicName;
       }
      }

}

else{
$PicMessage = "Invalid File Type";
}
else if(is_uploaded_file($PicName)) {
  move_uploaded_file($PicTempName, "../photos/". $PicName);
  $PicMessage = "Stored in: ". "../photos/". $PicName;
}