【问题标题】:How to upload only certain formats in image upload in php using pathinfo_extension如何使用 pathinfo_extension 在 php 中仅上传特定格式的图像上传
【发布时间】:2018-10-01 05:28:05
【问题描述】:

我的页面中有一个图片上传部分。那里的用户应该只上传图像格式。我已经创建了使用 PATHINFO_EXTENSION 检查文件扩展名的代码。

if(isset($_POST['addstaff']))
{
    $name=$_POST['name'];
    $photo=$_FILES['photo']['name'];
    $phototmp=$_FILES['photo']['tmp_name'];
    $location="staff/";
    $uploading=move_uploaded_file($phototmp,"staff/".$photo);
    $up="staff/".$photo;
    $imageFileType = strtolower(pathinfo($photo,PATHINFO_EXTENSION));
    $empid=$_POST['empid'];
    $pass=$_POST['pass'];
    $password=password_hash($pass,PASSWORD_BCRYPT);
    $branch=$_POST['branch'];
    $doj=$_POST['doj'];
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
        echo "<script>alert('Sorry, only JPG, JPEG, PNG & GIF files are allowed.');</script>";
        }
        else{
            $query="insert into staffdetails value('','$name','$empid','$branch','$doj','$up')";
        $exe=mysqli_query($con,$query);
        if($exe){
            echo "<script>alert('Inserted');</script>";
        }
        else{
            echo "errr".mysqli_error($con);
        }
        }


}

这里的问题是,当我上传 php 文件或任何其他文件而不是图像文件时,它会正确显示警告消息“抱歉,只允许 JPG、JPEG、PNG 和 GIF 文件。”但它也插入文件。我在if else 条件中添加了这个然后 if 和 else 条件如何一起工作。请大家帮忙

【问题讨论】:

  • 你应该检查文件扩展名之前你调用move_uploaded_file()(这是实际复制上传文件到你的上传文件夹的功能)。
  • 警告:您对SQL Injections 持开放态度,应该真正使用参数化Prepared Statements,而不是像那样手动构建查询。特别是因为您根本没有逃避用户输入!
  • 对不起,我没有得到你。使用预处理语句并不能防止 SQL 注入?
  • 应该使用参数化的预处理语句,因为它确实可以防止 SQL 注入。
  • 我确实发布了一些链接来解释 SQL 注入和准备好的语句。从阅读那些开始(从 SQL 注入开始)。

标签: php image-upload


【解决方案1】:

验证成功后应调用 move_uploaded_file() 函数

把代码改成下面

if(isset($_POST['addstaff']))
{
    $name=$_POST['name'];
    $photo=$_FILES['photo']['name'];
    $phototmp=$_FILES['photo']['tmp_name'];
    $location="staff/";
    $up="staff/".$photo;
    $imageFileType = strtolower(pathinfo($photo,PATHINFO_EXTENSION));
    $empid=$_POST['empid'];
    $pass=$_POST['pass'];
    $password=password_hash($pass,PASSWORD_BCRYPT);
    $branch=$_POST['branch'];
    $doj=$_POST['doj'];
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
        echo "<script>alert('Sorry, only JPG, JPEG, PNG & GIF files are allowed.');</script>";
        }
        else{
            $uploading=move_uploaded_file($phototmp,"staff/".$photo);
            $query="insert into staffdetails value('','$name','$empid','$branch','$doj','$up')";
            $exe=mysqli_query($con,$query);
           if($exe){
               echo "<script>alert('Inserted');</script>";
           }
           else{
               echo "errr".mysqli_error($con);
           }
        }


}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多