Nueva pregunta

Pregunta:

Fecha: 03-01-2020 14:11:55 (En Español)

Verificar si el formato del archivo es de tipo "image/jpg" || "image/png" || "image/jpeg" etc...[Resuelta]

Hola amigos.
Tengo un serio problema al cual no le encuentro la solución desde ayer, resulta que he desarrollado un input para subir archivo y funciona casi a la perfección, es solo que la validación no me esta funcionando y no se cual es la razón, me deja subir archivos de vídeo y hasta archivos .pdf y he creado una validación para que solo me deje subir archivos autorizado pero la validación no me esta funcionando y ya la he revisado mas de mil veces y no encuentro el error, aqui les voy a dejar el código.

backend:
<?php

require_once './conexion.php';

$email = $_SESSION['email'];

$success = '';
$errors = '';

 // Validar que el usuario no exista en la base de datos
 $sentencia = $conexion->prepare("SELECT * FROM users WHERE email = :email LIMIT 1");

 $sentencia->execute(array(
     ':email' => $email
 ));

if(isset($_FILES['foto'])){
    $foto = $_FILES['foto'];
    $nameFoto = $foto['name'];
    $type = $foto['type'];

    if($type == "image/jpg" || $type == "image/jpeg" || $type == "image/png" || $type || "image/git" || $type || "image/gif"){

        if(!is_dir('image')){
            mkdir('image', 0777);
        }

            move_uploaded_file($foto['tmp_name'], 'image/'.$nameFoto);

            // Insertar la foto en la base de datos
            if(empty($errors)){
                $statement = $conexion->prepare("UPDATE users SET foto = :nameFoto WHERE email = '$email'"
                );
                $statement->execute(array(
                    ':nameFoto' => $nameFoto
                ));

            }

            $success = "Has colocado una foto de perfil";
            // header("Refresh:4; url=page2.php");

    }else{
        $errors = "El tipo de imagen $type no es soportado";
    }

}

?>


Frontend
<?php session_start();

// Comprobar si el usuario ha inciado sesion
if(empty($_SESSION['email'])){
    header('Location: index.php');
}

require_once 'backend/foto.php';
require_once 'conexion.php';

$email = $_SESSION['email'];

// Sacar el nombre de la persona que ha iniciado sesion
$stmt = $conexion->query("SELECT * FROM users WHERE email = '$email'");
$stmt->execute(['email' => $email]);
while ($row = $stmt->fetch()) {
    $name = $row['name'];
    $surname = $row['surname'];
    $message = $row['message'];
    $sexo = $row['sexo'];
    $nameFoto = $row['foto'];
}

?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Completa tus datos | Blog_master</title>
    <!-- Favicon -->
    <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
    <!-- Estilos CSS -->
    <link rel="stylesheet" href="css/style.css">
    <!-- Google Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Livvic&display=swap" rel="stylesheet">
</head>
<body>
    <!-- Header de la pagina -->
    <?php require 'header.php'; ?>

    <main>
        <section id="contenedor">
            <a href="cerrar.php" class="salir">Cerrar Sesion</a>
                <article>
                    <h3><?php echo $name . " " . $surname; ?>, coloca una foto de perfil</h3>
                    <?php if($nameFoto == false){ ?>
                        <!-- Si el usuario no tiene foto de perfil, coloco una por defecto -->
                        <?php if($sexo == 'masculino') { ?>
                            <p><img src="img/hombre.png" class="perfil" alt="Imagen de usuario de <?=$name?>" title="Foto de perfil de <?=$name?>" height="150"></p>
                        <?php } else{  ?>
                            <p><img src="img/mujer.png" class="perfil" alt="Imagen de usuario de <?=$name?>" title="Foto de perfil de <?=$name?>" height="150"></p>
                        <?php } ?>

                        <?php }else{ ?>
                        <!-- Si tiene foto de perfil, coloco la que tiene -->
                        <p><img src="image/<?=$nameFoto?>" class="perfil" alt="Imagen de usuario de <?=$name?>" title="Foto de perfil de <?=$name?>" height="150"></p>

                        <?php } ?>

                        <!-- Formulario de envio de foto -->
                        <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">
                            <div id="center">
                                <div id="div_file">
                                    <p id="texto">Seleccionar</p>
                                    <p><input type="file" name="foto" id="my_foto"></p>
                                </div>
                            </div>
                        <button type="submit" class="enviar_foto" name="submit_foto">Enviar</button> <br/>

                        <!-- Mensaje de error o exito -->
                        <?php if(isset($errors) || isset($success)) : ?>
                            <p class="verde"><?php echo $success; ?></p>
                            <p class="rojo"><?php echo $errors; ?></p>
                        <?php endif ?>

                        </form>

                        <br/>
                        <hr/>
                    <p><a href="home.php">Saltar este paso</a></p>
                </article>
        </section>
    </main>

    <!-- Header de la pagina -->
    <?php require 'footer.php'; ?>
</body>
</html>
Etiquetas: PHP - Subir Archivos (Upload) Votos: 0 - Respuestas: 1 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 03-01-2020 14:15:26 El error estaba en la condición y es que de manera muy entorpecida yo estaba escribiendo mal la condición y en realidad la sintaxis correcta es de esta forma

    if($type == "image/jpg" || $type == "image/jpeg" || $type == "image/png" || $type == "image/git" || $type == "image/gif"){
    
    }


    Doy por resuelta esta pregunta, disculpen por ese gran error mio del cual no me había dado de cuenta.
    Un saludo y buen código...
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com