简体   繁体   中英

how to solve this undefined index error in php

I'm facing one error which is undefined index: user_image

My input file name is user_image and I just defined that user_image at above the function and leaved it empty "" and then I defined that also in register function, but still im getting error of undefined index:User_image.

Look at my functions i just included this function in my main page.

$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) && ($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) && empty($email_error) && empty($password_1_error) && empty($password_2_error) && 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>

Firstly, you need to add enctype="multipart/form-data" attribute to your form.

Secondly you should check for the index first

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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM