PHP &

1 Cevap php

Ben yeni bir isim değil, yeni bir avatar gönderdiğinizde ben şu avatarı hata mesajı alıyorum Please upload a .gif, .jpeg, .jpg or .png image!. I Please upload a .gif, .jpeg, .jpg or .png image! Birisi bana bu sorunu gidermek yardımcı olabilir sadece avatar hata mesajı almadan yeni bir avatar formu gönderdiğim her zaman yüklemek zorunda kalmadan yeni bir isim göndermek mümkün olmak istiyorum?

İşte php kodudur.

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

    $mysqli = mysqli_connect("localhost", "root", "", "sitename");
    $dbc = mysqli_query($mysqli,"SELECT users.*
                                 FROM users 
                                 WHERE user_id=3");

    $first_name = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_POST['first_name'])));

$user_id = '3';

if(isset($_FILES["avatar"]["name"]) && $_FILES['avatar']['size'] <= 5242880) {

    if($_FILES["avatar"]["type"] == "image/gif" || $_FILES["avatar"]["type"] == "image/jpeg" || $_FILES["avatar"]["type"] == "image/jpg" || $_FILES["avatar"]["type"] == "image/png" || $_FILES["avatar"]["type"] == "image/pjpeg") {

        if (file_exists("../members/" . $user_id . "/images/" . $_FILES["avatar"]["name"])) {
          echo '<p class="error">' . mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"])))) . ' already exists! ';
        } else if($_FILES["avatar"]["name"] == TRUE) {
          move_uploaded_file($_FILES["avatar"]["tmp_name"],
          "../members/" . $user_id . "/images/" . mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"])))));
          $avatar = mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"]))));
        }

    } else if($_FILES["avatar"]["type"] != "image/gif" || $_FILES["avatar"]["type"] != "image/jpeg" || $_FILES["avatar"]["type"] != "image/jpg" || $_FILES["avatar"]["type"] != "image/png" || $_FILES["avatar"]["type"] != "image/pjpeg") {
        echo '<p class="error">Please upload a .gif, .jpeg, .jpg or .png image!</p>';
    }

} else if($_FILES['avatar']['size'] >= 5242880) {
    echo '<p class="error">Please upload a smaller pic!</p>';
} else if($_FILES["avatar"]["name"] == NULL) {
    $avatar = NULL;
}


if(isset($_FILES["avatar"]["name"]) && $_FILES['avatar']['size'] <= 5242880) {

        if (mysqli_num_rows($dbc) == 0) {
                $mysqli = mysqli_connect("localhost", "root", "", "sitename");
                $dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, first_name, avatar) 
                                             VALUES ('$user_id', '$first_name', '$avatar')");
        }

        if ($dbc == TRUE) {
                $dbc = mysqli_query($mysqli,"UPDATE users 
                                             SET first_name = '$first_name', avatar = '$avatar' 
                                             WHERE user_id = '$user_id'");

                echo '<p class="changes-saved">Your changes have been saved!</p>';

        }

        if (!$dbc) {
                print mysqli_error($mysqli);
                return;
        }

    }

}

1 Cevap

Sen sadece onlar (veya boş bıraktı) kendi avatar için yeni bir imaj belirtilmişse görmek için bir onay eklemeniz gerekir. Bu durumda, form kurmak nasıl bilmeden, sadece boyutu sıfırdan büyük (isset () / boş () Bu durumda beklenmeyen sonuçlar döndürebilir) olduğunu kontrol edebilir:

if($_FILES['avatar']['size'] > 0) { ... }

Edit In response to your comment, you'd change the following line (including fixing a basic logic error):

} else if($_FILES["avatar"]["type"] != "image/gif" || $_FILES["avatar"]["type"] != "image/jpeg" || $_FILES["avatar"]["type"] != "image/jpg" || $_FILES["avatar"]["type"] != "image/png" || $_FILES["avatar"]["type"] != "image/pjpeg") {

için:

} else if($_FILES["avatar"]["size"] <= 0 && $_FILES["avatar"]["type"] != "image/gif" && $_FILES["avatar"]["type"] != "image/jpeg" && $_FILES["avatar"]["type"] != "image/jpg" && $_FILES["avatar"]["type"] != "image/png" && $_FILES["avatar"]["type"] != "image/pjpeg") {