как решить эту неопределенную ошибку индекса в php

#php #html

#php #HTML

Вопрос:

Я столкнулся с одной ошибкой, которая является неопределенным индексом: user_image

Мое имя входного файла — user_image, и я только что определил это user_image над функцией и оставил его пустым «», а затем я определил это также в функции register, но все равно получаю ошибку неопределенного индекса: User_image.

Посмотрите на мои функции я только что включил эту функцию на свою главную страницу.

 $username = $email = $password_1 = $password_2 = $user_image = "";
$username_error = $email_error = $password_1_error = $password_2_error = $user_image_error = "";
$username_err = $password_err = "";

if (isset($_POST['register'])) {
    register();
}

function register(){
    global $db, $username, $email, $user_image, $username_error, $email_error, $password_1_error, $password_2_error, $user_image_error;

    $username    =  e($_POST['username']);
    $email       =  e($_POST['email']);
    $password_1  =  e($_POST['password_1']);
    $password_2  =  e($_POST['password_2']);

    $user_image  =  $_FILES['user_image']['name'];
    $temp_name1 =  $_FILES['user_image']['tmp_name'];

    move_uploaded_file($temp_name1, "assets/images/users/$user_image");  

    if (empty($username)) { 
        $username_error = "Username is required"; 
    }else{
        $query = "SELECT * FROM users WHERE username='$username' LIMIT 1";
        $results = mysqli_query($db, $query);
        if (mysqli_num_rows($results) == 1) { 
            $username_error = "Username is already taken";
        }
    }
    if (empty($email)) { 
        $email_error = "Email is required"; 
    }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $email_error = "Invalid email format";
    }else{
        $query = "SELECT * FROM users WHERE email='$email' LIMIT 1";
        $results = mysqli_query($db, $query);
        if (mysqli_num_rows($results) == 1) { 
            $email_error = "Email is already taken";
        }
    }

    if(empty(trim($password_1))){
        $password_1_error = "Please enter a password.";
    } elseif(strlen(trim($password_1)) < 6){
        $password_1_error = "Password must have atleast 6 characters.";
    } 

    if(empty(trim($password_2))){
        $password_2_error = "Please confirm password.";
    } else{
        if(empty($password_1_error) amp;amp; ($password_1 != $password_2)){
            $password_2_error = "Password did not match.";
        }
    }

    if(empty(trim($user_image))){
        $user_image_error = "User Image is must needed";
    }

    if (empty($username_error) amp;amp; empty($email_error) amp;amp; empty($password_1_error) amp;amp; empty($password_2_error) amp;amp; empty($user_image_error)) {
        $password = md5($password_1);

        if (isset($_POST['role'])) {
            $role = e($_POST['role']);
            $query = "INSERT INTO users (username, email, role, password, user_image) 
                      VALUES('$username', '$email', '$role', '$password', '$user_image')";
            mysqli_query($db, $query);
            $_SESSION['success']  = "New user successfully created!!";
            header('location: index.php');
        }else{
            $query = "INSERT INTO users (username, email, role, password, user_image) 
                      VALUES('$username', '$email', 'user', '$password', '$user_image')";
            mysqli_query($db, $query);

            $logged_in_user_id = mysqli_insert_id($db);

            $_SESSION['user'] = getUserById($logged_in_user_id); // put logged in user in session
            $_SESSION['success']  = "You are now logged in";
            header('location: index.php');              
        }

    }

}
  

HTML

 <div class="custom-file">
        <input type="file" class="custom-file-input"  name="user_image" id="customFile">
        <label class="custom-file-label" for="customFile">Choose file</label>
        <span class="text-danger"><?php echo $user_image_error; ?></span>
</div>
  

Комментарии:

1. Пожалуйста, покажите нам свой <form> тег.

Ответ №1:

Во-первых, вам нужно добавить enctype="multipart/form-data" атрибут в вашу форму.

Во-вторых, вы должны сначала проверить индекс

 if(isset($_FILES['user_image'])){

}
  

Комментарии:

1. ого, большое спасибо, теперь все работает. Проблема в том, что я забыл добавить enctype=»multipart/form-data» в свой тег формы.