Php 将图片上载到文件夹时遇到问题

Php 将图片上载到文件夹时遇到问题,php,Php,我初始化变量,使用move_uploaded_file函数,然后编写一个基本表单,用户将使用该表单上传他们的照片。我试图打印至少一个错误消息或成功消息,显示他们是否成功加载文件。什么都没有出现。救命啊 $error_msg = ""; $success_msg = ""; $name2 = ""; if ($_POST['parse_var'] == "pic"){ if (!$_FILES['

我初始化变量,使用move_uploaded_file函数,然后编写一个基本表单,用户将使用该表单上传他们的照片。我试图打印至少一个错误消息或成功消息,显示他们是否成功加载文件。什么都没有出现。救命啊

           $error_msg = "";
           $success_msg = "";
           $name2 = "";


       if ($_POST['parse_var'] == "pic"){

        if (!$_FILES['fileField']['tmp_name']) { 

            $error_msg = '<font color="#FF0000">ERROR: Please browse for an image before you press submit.</font>';

        } else {

            $maxfilesize = 51200; // 51200 bytes equals 50kb
            if($_FILES['fileField']['size'] > $maxfilesize ) { 

                        $error_msg = '<font color="#FF0000">ERROR: Your image was too large, please try again.</font>';
                        unlink($_FILES['fileField']['tmp_name']); 

            } else if (!preg_match("/\.(gif|jpg|png)$/i", $_FILES['fileField']['name'] ) ) {

                        $error_msg = '<font color="#FF0000">ERROR: Your image was not one of the accepted formats, please try again.</font>';
                        unlink($_FILES['fileField']['tmp_name']); 

            } else { 

                        $newname = $id'.jpg';
                        $place_file = move_uploaded_file( $_FILES['fileField']['tmp_name'], "images/$id/".$newname);
                        $success_msg = '<font color="#009900">Your image has been updated, it may take a few minutes for the changes to show... please                                                    be patient.</font>';
            }

        } // close else that checks file exists

}


    <table width="709" align="center" cellpadding="5">
            <form action="edit_profile.php" enctype="multipart/form-data" method="post" name="pic1_form" id="pic1_form">
          <!--    <tr>
                <td width="125" class="style7"><div align="center"><strong>Please Do First &rarr;</strong></div></td>

              </tr>-->
              <tr>
            <td width="16%"><?php print "$user_pic"; ?></td>
            <td width="74%">
              <input name="fileField" type="file" class="formFields" id="fileField" size="42" />
              50 kb max
           </td>
            <td width="10%">
              <input name="parse_var" type="hidden" value="pic" />
              <input  type="submit" name="button" id="button" value="Submit" />
            </td>
           </tr>
           </form></table>
$error_msg=”“;
$success_msg=“”;
$name2=“”;
如果($\u POST['parse\u var']==“pic”){
如果(!$\u文件['fileField']['tmp\u名称]]){
$error_msg='错误:请在按submit之前浏览图像';
}否则{
$maxfilesize=51200;//51200字节等于50kb
如果($_FILES['fileField']['size']>$maxfilesize){
$error_msg='错误:您的图像太大,请重试';
取消链接($_文件['fileField']['tmp_名称']);
}如果(!preg|u match(“/\”(gif | jpg | png)$/i“,$|u文件['fileField']['name'])){
$error_msg='错误:您的图像不是可接受的格式之一,请重试。';
取消链接($_文件['fileField']['tmp_名称']);
}否则{
$newname=$id'.jpg';
$place_file=move_上传的_文件($_文件['fileField']['tmp_name'],“images/$id/”$newname);
$success_msg='您的图像已更新,可能需要几分钟时间才能显示更改…请耐心等待。';
}
}//关闭检查文件存在的其他项
}
最大50 kb

我看不到该代码中有任何地方您在回显错误或成功消息。

您正在检查上传是否以错误的方式执行:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ... we're in a post situation, so check if a file was uploaded ...
   if ($_FILES['fileField']['error'] !== UPLOAD_ERR_OK) {
      $error_msg = "File upload failed with error code " . $_FILES['fileField']['error'];
   } else {
      ... a file was successfully uploaded ...
      ... process it ...
      if (!move_uploaded_file( ... )) {
        $error_msg = "Failed to move file";
      }
   }
}
检查是否存在表单字段是检查是否执行POST的一种糟糕的方法。您可能会忘记在表单中输入该字段,名称可能会更改,等等。。。检查
REQUEST_方法
保证有效,因为无论执行何种请求,都会设置该方法,并且始终是请求的类型(get、post、head等)


另外,不要使用用户提供的文件名来验证他们是否上传了图像。只需将其他类型的文件重命名为“whatever.jpg”,就可以轻易伪造该名称。使用服务器端方法检查它是否是图像,例如或我认为您要查找的错误是:

$newname = $id'.jpg';
你忘了一个点,整个脚本就崩溃了:

$newname = $id.'.jpg';

您是否收到任何PHP错误?您是否启用了“错误报告”?注意:您的表单标签不应紧跟其后!它可以放在一个文件夹中,也可以放在周围,但不能放在你放的地方。我稍后会检查反馈给你们所有人。我试图附加它,但我认为它不起作用,尽管我会尝试按照你说的做,以防我犯错误。你现在是我检查我没有看到我回显此消息的地方我将它放在表标记中回显,而且它正在打印信息,加载图像也需要相当长的时间