首页 > 解决方案 > 只应上传 jpg jpeg 和....照片

问题描述

我一直试图解决这个问题几个小时,但它没有奏效。

问题是:

我只想上传jpg png之类的照片,但是当我上传这种类型的照片时,我收到错误消息,只有在上传数据类型错误时才会显示。

我写了所有的代码,我还写了一些可能有问题的部分代码,所以一切都对你来说是清楚的。

<?php

//msg for the first name,
$msg='';
//msg2 for the last name
$msg2='';

//msg3 for the email
$msg3='';
//msg4 for the date
$msg4='';
//msg5 for the password
$msg5='';
//msg6 for the re Password 
$msg6='';
//msg7 for the image
$msg7='';
//msg8 for the checkbox
$msg8='';
$msg9='';
$msg10='';

$firstname='';$lastname='';$email='';$date='';$password='';$c_password='';$image='';

include("includes\header.php");
include("includes\config.php");

/**isset: checks if a variable is set, which means that it has to be declared and is not NULL */
if(isset($_POST['submit']))
{

//mysqli not mysql`enter code here 
$firstname=mysqli_real_escape_string($con, $_POST['fname']);
$lastname=mysqli_real_escape_string($con, $_POST['lname']);
$email=mysqli_real_escape_string($con, $_POST['mail']);
$date=$_POST['dob'];
$password=$_POST['pass'];
$c_password=$_POST['cpass'];
$image=$_FILES['image']['tmp_name'];
$checkbox=isset($_POST['check']);

// this two line was for testin, if all this is ok 
//echo $firstname. "<br>".$lastname."<br>"."<br>".$email."<br>". "<br>".$date."<br>". "<br>".$password."<br>"
//."<br>".$c_password."<br>"."<br>".$image."<br>"."<br>".$checkbox."<br>";

//strlen is to returns the length of the string(firstname)
if(strlen($firstname) <3)
{
    // This message must be displayed if the number of letters of the given name is less than 3
    $msg="<div class='error'>First name must contain atleast 3 characters</div>";
}

else if(strlen($lastname) <3)
{
        // This message must be displayed if the number of letters of the given lastname is less than 3
    $msg2="<div class='error'>Last name must contain atleast 3 characters</div>";
}

//filter_var: filters the email with  FVE.
else if(!filter_var($email,FILTER_VALIDATE_EMAIL))
{
        // This message must be displayed if the number of letters of the given lastname is less than 3
    $msg3="<div class='error'>Enter Vaild Email</div>";
}

else if (empty($date))
{
$msg4="<div class='error'> Please Enter Your Date of Birth</div>";
}

else if (empty($password))
{
    $msg5="<div class='error'> Please Enter Your Password </div>";

}
else if (strlen($password) <5)
{

 $msg5="<div class='error'>Password must contain atleast 5 Character</div>" ;   

}

else if ($password!==$c_password)
{

    $msg6="<div class='error'> Password is not same </div>";
}

else if ($image=='')
{

    $msg7="<div class='error'> Please Upload Your Profile Image </div>";
}

else if($checkbox=='')
{
$msg8="<div class='error'> Please Agree Our Termas an Conditions </div>";
}
 
else
{

    $img_ext=explode(".",$image);
    $image_ext=$img_ext['1'];
    if($image_ext=='jpg' || $image_ext=='png' || $image_ext=='PNG' || $image_ext=='JPG' || $image_ext=='jpeg' || $image_ext=='JPEG' )
    {
        
        // to conection to the  database and gives the values    
        mysqli_query($con, "INSERT INTO users(first_name,last_name,mail,password,dob,img)
        VALUES ('$firstname', '$lastname','$email','$date','$password','$image')");

        $msg9="<div class='success'> You are Successfully Registered </div>";
        $firstname='';$lastname='';$email='';$date='';$password='';$c_password='';$image='';
    }

        else
           {
           $msg7="<div class='error'> Please Upload an Image File</div>";
           }

     }

// this slash  is from the if sumbmit
}

?>

//this part of code is  from body

</head>
<style>
</style>    
 <body>
     <!-- container: to set the content's margins dealing with the responsive behaviors of the layout.-->
 <div class='container'>
        <div class='login-form col-md-4 offset-md-4'>

                <!--jumbotron: ndicates a big box for calling extra attention to.-->
                <div class='jumbotron' style='margin-top:40px; padding-top:20px;   background-color:00FF00;   font-size: 20px; width:450px'> 
                    <h3 align='center'>SignUp</h3><br> 
                    <?php echo $msg9;?><br>

                    <!-- form: to creat form for user input
                        method=”POST” Specifying a value of POST means the browser will send the data to the web server to be processed.            
                        
                        enctype: specifies how the form-data should be encoded when submitting it to the server:
                            
                    -->
                    <form method='post' enctype="multipart/form-data">
                      <div class="form-group">
                            <label> First Name: </label>

                            <!-- 1name: the name of th input
                                 2. placeholder: specifies a short hint that describes the expected value of a input field / textarea.
                                 3. All textual <input>, <textarea>, and <select> elements with class .form-control have a width of 100%.
                            -->
                            <input type='text' name='fname' placeholder="First Name" class='form-control' value='<?php echo $firstname;?>'>
                            <!--IF the type of information provided is not the required one, this message will be displayed-->

                            <?php echo $msg;?>
                            
                        <!--the end of the div of First Name-->
                        </div>

                        <!--start div of the Last Name-->
                        <div class="form-group">
                            <label> Last Name: </label>
                            <input type='text' name='lname' placeholder="Last Name" class='form-control'  value='<?php echo $lastname;?>'>
                          <!--IF the type of information provided is not the required one, this message will be displayed-->

                            <?php echo $msg2;?>

                            <!--the end of the div of the Last Name-->
                        </div>
                    
                          <!--start div of the Email-->
                          <div class="form-group">
                            <label> Email: </label>
                            <input type='email' name='mail' placeholder="Your Email" class='form-control' value='<?php echo $email;?>'>

                            <!--IF the type of information provided is not the required one, this message will be displayed-->
                            <?php echo $msg3;?>

                            <!--the end of the div of the Email-->
                        </div>

                          <!--start div of the birth day-->
                          <div class="form-group">
                            <label> Date of Birth: </label>
                            <input type='date' name='dob'  value='<?php echo $date;?>'>
                            <?php echo $msg4; ?>

                            <!--the end of the div of birth day-->
                         </div>

                          <!--start div of the Password-->
                           <div class="form-group">
                                 <label> Password: </label>
                                 <input type='password' name='pass' placeholder="Password" class='form-control' value='<?php echo $password;?>'>
                                 <?php echo $msg5;?>

                              <!--the end of the div of the Password-->
                             </div>

                                <!--start div of the Re-enter Password-->
                                    <div class="form-group">
                                                 <label> Re-enter Password: </label>
                                                <input type='password' name='cpass' placeholder="Re-enter Password" class='form-control' value='<?php echo $c_password;?>'>
                                                <?php echo $msg6;?>
                                        <!--the end of the div of the Re-enter Password-->
                                     </div>
                  
                                          <!--start div of the image profile  -->
                                    <div class="form-group">
                                                 <label> Profile Image: </label>
                                                <input type='file' name='image'  value='<?php echo $image;?>'/><br>
                                                <?php  echo $msg7;?>

                                                <?php  echo $msg10;?>
                                        <!--the end of the div of the image profile -->
                                     </div>
                                    

                                  <!--start div of the checkbox  -->
                                      <div class="form-group">
                                                 <input type='checkbox' name='check'  />
                                                I Agree the terms and conditions
                                                <?php  echo $msg8;?>


                                        <!--the end of the div of the checkbox -->
                                     </div>

                                        <!-- submit button-->
                                     <br><input type='submit' value='submit' name='submit'  class='btn btn-success' style="background-color:blue;"><br>

                           <!--the end of the form for the sign up icon-->          
                        </form>

                   <!--the end of the jumbtorn class-->     
                 </div>
   
        </div>
</div>

</body> 
</html>

我已经重写了可能出现问题的代码部分。

 // this part is from php
else
{

    $img_ext=explode(".",$image);
    $image_ext=$img_ext['1'];
    if($image_ext=='jpg' || $image_ext=='png' || $image_ext=='PNG' || $image_ext=='JPG' || $image_ext=='jpeg' || $image_ext=='JPEG' )
    {
        
        // to conection to the  database and gives the values    
        mysqli_query($con, "INSERT INTO users(first_name,last_name,mail,password,dob,img)
        VALUES ('$firstname', '$lastname','$email','$date','$password','$image')");

        $msg9="<div class='success'> You are Successfully Registered </div>";
        $firstname='';$lastname='';$email='';$date='';$password='';$c_password='';$image='';
    }

        else
           {
           $msg7="<div class='error'> Please Upload an Image File</div>";
           }

     }
  

这部分来自身体。

我已经重写了可能出现问题的代码部分。

          <!--start div of the image profile  -->
                                    <div class="form-group">
                                                 <label> Profile Image: </label>
                                                <input type='file' name='image'  value='<?php echo 
                                                $image;?>'/><br>
                                                <?php  echo $msg7;?>

                                                <?php  echo $msg10;?>
                                        <!--the end of the div of the image profile -->
                                     </div>

标签: phphtmlcssmysql

解决方案


您可以添加到您的输入accept参数:

<input type="file" name="myImage" accept="image/jpeg" />

当用户选择图像时,他将在自己的文件管理器中只看到 JPG 文件。我不记得这在每个浏览器中都有效。在 Chrome 中必须工作。在 Safari 中可能不是。

您还可以在发送到服务器端之前检查文件扩展名。只需像这样编写自定义验证器(JS代码):

var file = "test.mp4";
var valid = (file.substring(file.lastIndexOf("."), file.length)).toLowerCase();

if (valid != '.jpg') {
  console.log("Please Select Valid Image");
} else {
  console.log("Is valid image");
}

推荐阅读