#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» в свой тег формы.