مشکل ثبت عکس در PHP PDO

PHP -
2 ماه پیش
توسط mahdi zamani آپدیت شد
پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

درود دوستان...
من کدی برای ارسال و ثبت عکس در پایگاه داده نوشتم و در کنار پوشه images برای ذخیره عکس ها ایجاد کردم...
تابع move_uploaded_file به کار بردم ولی هیچ عکس العملی نشون نمیده...
جدول پایگاه داده images هستش...
مشکل از کجاست؟
کد زیر:

if(isset($_POST['signup']) && isset($_FILES['image'])){

    $errors= array();
    $file_name = $_FILES['images']['name'];
    $file_size = $_FILES['images']['size'];
    $file_tmp = $_FILES['images']['tmp_name'];
    $file_type = $_FILES['images']['type'];
    $file_ext=strtolower(end(explode('.',$_FILES['images']['name'])));

    $extensions= array("jpeg","jpg","png");

    if(in_array($file_ext,$extensions)=== false){
       $errors[]="extension not allowed, please choose a JPEG or PNG file.";
    }

    if($file_size > 2097152) {
       $errors[]='File size must be excately 2 MB';
    }

    if(empty($errors)==true) {
       move_uploaded_file($file_tmp,"images/".$file_name);
       echo "Success";
    }else{
       print_r($errors);
    }

    $name=$_POST['name'];
    $fname=$_POST['fname'];
    $url=$_POST['url'];
    $number=$_POST['number'];
    $user=$_POST['user'];
    $images=$_POST['images'];
    $email=$_POST['email'];
    $password= md5($_POST['password']);

    try {

        $sql = "INSERT INTO users(name,fname,url,number,user,images,email,password) VALUES('$name','$fname','$url',$number,'$user','$images','$email','$password')";
        $query = $con->prepare($sql);

        $query->bindParam(':name',$name,PDO::PARAM_STR);
        $query->bindParam(':fname',$fname,PDO::PARAM_STR);
        $query->bindParam(':url',$url,PDO::PARAM_STR);
        $query->bindParam(':number',$number,PDO::PARAM_STR);
        $query->bindParam(':user',$user,PDO::PARAM_STR);
        $query->bindParam(':images',$images,PDO::PARAM_STR);
        $query->bindParam(':email',$email,PDO::PARAM_STR);
        $query->bindParam(':password',$password,PDO::PARAM_STR);

        $query->execute();

        if($query->rowCount() == 1){
            header('location: profile.php');
        }
    }catch(PDOException $exception){
        echo "Error: " . $exception->getMessage();
    }
}

در HTML :

<div class="form-group">
    <label for="img">عکس نمایه :</label>
    <input type="file" class="form-control-file" id="img" name="image">
</div>
حسام موسوی ( 311284 تجربه )
2 ماه پیش
تخصص : طراح و برنامه نویس

قدم به قدم لاگ بگیرید ببینید اصلا فایل دریافت میشه اطلاعات درست هست و ...

پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@hesammousavi
همین روش گفتی انجام دادم...
نه دریافت میشه و نه ارسال ..

الیاس بشکنی ( 69675 تجربه )
2 ماه پیش
تخصص : در حال یادگیری

توی تگ فرم این رو گذاشتین ؟

enctype="multipart/form-data"
پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@elyasbeshkani
آره ...

<form method="post" action="signup.php" enctype="multipart/form-data">
پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

اینم یک نمونه دیگر که کار نمی کنه:

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["images"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if(isset($_POST['signup'])){

    $check = getimagesize($_FILES["images"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }

    $name=$_POST['name'];
    $fname=$_POST['fname'];
    $url=$_POST['url'];
    $number=$_POST['number'];
    $user=$_POST['user'];
    $images=$_POST['images'];
    $email=$_POST['email'];
    $password= md5($_POST['password']);

    try {

      $sql = "INSERT INTO users(name,fname,url,number,user,images,email,password) VALUES('$name','$fname','$url',$number,'$user','$images','$email','$password')";
        $query = $con->prepare($sql);

        $query->bindParam(':name',$name,PDO::PARAM_STR);
        $query->bindParam(':fname',$fname,PDO::PARAM_STR);
        $query->bindParam(':url',$url,PDO::PARAM_STR);
        $query->bindParam(':number',$number,PDO::PARAM_STR);
        $query->bindParam(':user',$user,PDO::PARAM_STR);
        $query->bindParam(':images',$images,PDO::PARAM_STR);
        $query->bindParam(':email',$email,PDO::PARAM_STR);
        $query->bindParam(':password',$password,PDO::PARAM_STR);

        $query->execute();

        if($query->rowCount() == 1){
            header('location: profile.php');
        }

    }catch(PDOException $exception){
        echo "Error: " . $exception->getMessage();
    }
}

if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["images"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["images"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["images"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
الیاس بشکنی ( 69675 تجربه )
2 ماه پیش
تخصص : در حال یادگیری

@endworld
من که توی ظاهرش مشکلی نمیبنم
ولی خب مرحله به مرحله چک کنین
مخصوصا ورودی دوم تابع move_uploaded_file که آدرس هست
فکر کنم یکم حساسیت داشته باشه توی نوع آدرس دهی
توی

$target_dir = "uploads/";

قبل از اسم پوشه یه / بذارین یعنی اینجوری :

$target_dir = "/uploads/";
پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@elyasbeshkani
این روش گفتی تغییر دادم, متاسفانه کار نکرد :(

Ali Ghaleyan ( 11965 تجربه )
2 ماه پیش
تخصص : برنامه نویس لاراول

@endworld
میشه مقدار $_FILES رو چاپ بگیرید ببینید اصلا فایل ارسال میشه؟

پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@Serjik
بدون فایل خطا می گیره..
با فایل خطایی چیزی نشون نمیده...

Ali Ghaleyan ( 11965 تجربه )
2 ماه پیش
تخصص : برنامه نویس لاراول

متوجه نمیشم میشه یکم بهتر و بیشتر توضیح بدی؟
شما فایل رو تو فرم انتخاب میکنی و سابمیتش میکنی
تو مقصد فرم فایلی ارسال میشه اصلا؟

پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@Serjik
فایل انتخاب می کنم و دکمه ارسال می زنم توی مقصد فایل ارسال نمیشه...

Ali Ghaleyan ( 11965 تجربه )
2 ماه پیش
تخصص : برنامه نویس لاراول

@endworld
کد کامل فرمتون رو بفرستید

پایان جهان ( 91038 تجربه )
2 ماه پیش
تخصص : جوجه برنامه نویس وردپرس و لاراول

@Serjik

<form method="post" action="signup.php" enctype="multipart/form-data">
                    <div class="form-group">
                      <label for="name">نام :</label>
                      <input type="text" class="form-control" id="name" name="name" required>
                    </div>
                    <div class="form-group">
                      <label for="fname">نام خانوادگی :</label>
                      <input type="text" class="form-control" id="fname" name="fname" required>
                    </div>
                    <div class="form-group">
                      <label for="url">آدرس سایت :</label>
                      <input type="text" class="form-control" id="url" name="url" required>
                    </div>
                    <div class="form-group">
                      <label for="number">شماره موبایل :</label>
                      <input type="text" class="form-control" id="number" name="number" required>
                    </div>
                    <div class="form-group">
                      <label for="inImg">عکس نمایه :</label>
                      <input type="file" class="form-control-file" id="inImg" name="images" required>
                    </div>
                    <div class="form-group">
                      <label for="username">نام کاربری :</label>
                      <input type="text" class="form-control" id="username" name="user" required>
                    </div>
                    <div class="form-group">
                      <label for="inEmail">رایانامه :</label>
                      <input type="email" class="form-control" id="inEmail" name="email" required>
                    </div>
                    <div class="form-group">
                      <label for="inPassword">رمز عبور :</label>
                      <input type="password" class="form-control" id="inPassword" name="password" required>
                    </div>
                    <div class="control-group">
                    <img src="generatecaptcha.php?rand=<?php echo rand(); ?>" name="captcha_img" id='image_captcha' > 
                      <a href='javascript: refreshing_Captcha();'><i class="icon-refresh icon-large"></i></a> 
                        <script language='JavaScript' type='text/javascript'>
                            function refreshing_Captcha()
                            {
                                var img = document.images['image_captcha'];
                                img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random()*1000;
                            }
                        </script>
                    </div>
                    <div class="form-group">
                      <input id="code" name="code_confirmation" type="text" placeholder="کد امنیتی را وارد نمایید" required>
                    </div>                 
                    <button type="submit" name="signup" class="btn btn-primary">ثبت نام</button>
                  </form>
mahdi zamani ( 100 تجربه )
2 ماه پیش

واقعا احسنت به این سوالاتی که مطرح میکنین و درد همه ی مردم جامعه در همین سوالات گنجانده شده . من باز هم تشکر میکنم

برای ارسال پاسخ باید وارد سایت شوید