De imagen de perfil no se muestran correctamente - PHP MySQL

TC:

Tengo problemas para mostrar mis perfil de los usuarios imágenes correctamente. El guión que tengo a continuación hace mover una imagen en la carpeta correcta y también se inserta en la base de datos correctamente. El problema surge cuando se trata de mostrar que en el perfil de los usuarios.

Creo que es algo que ver con mi estructura de carpetas, sin embargo, la puedo quitar momento ../en $uploadDirantes profilesen la ruta del archivo en el script PHP, nada funciona. Cualquier orientación sería muy apreciada. Cuando Inspeccionar elemento en la etiqueta de la imagen, se puede ver que el ../también tiene su eco, lo cual significa que no puede encontrar la imagen, ya que sólo debe ser profiles/.

Mi estructura de carpetas:

>profiles
    >image1.jpg
    >image2.jpg
>scripts
    >edit-picture.php
>profile.php
>index.php

profile.php:

<b>Profile Picture: </b>
    <?php 
        $picture = $row['imagePath'];
        if (empty($picture)){
            echo "<img src='profiles/no-image.png' width='100' height='100' >";
        } else {
            echo "<img src='".$row['imagePath']."' width='100' height='100' >";    
        };
    ?>
<form action="scripts/edit-picture.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image"/>
<input type="submit" name="edit-picture" value="Upload"/>

scripts / edit-picture.php:

<?php
    require 'db.php';
    $uploadDir = '../profiles/';

    if (isset($_POST['edit-picture'])) {

        session_start();
        $studentID = $_SESSION['studentID'];

        $fileName = $_FILES['image']['name'];
        $tmpName = $_FILES['image']['tmp_name'];
        $fileSize = $_FILES['image']['size'];
        $fileType = $_FILES['image']['type'];

        $filePath = $uploadDir.$fileName;

        $result = move_uploaded_file($tmpName, $filePath);
        if (!$result) {
            echo "Error uploading file";
            exit;
        }
        else{
            // If image uploads ok, return to this page
            header("Location: ../profile.php?imageuploaded");
        }
        if(mysqli_connect_errno()){
              printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        if(!get_magic_quotes_gpc()){
            $fileName = addslashes($fileName);
               $filePath = addslashes($filePath);
        } 
        $stmt = $conn->prepare ("INSERT INTO `profileImage` (`imageID`, `imagePath`, `studentID`) VALUES (NULL, ?, ?) ");
        $stmt->bind_param("si", $filePath, $studentID); 
        $stmt->execute() or die("Failed to insert image into the database");
    }
?>

Se trata de los datos de la tabla (segunda fila se puede ver dónde está el error está en el ../antes de que el nombre de la carpeta y la imagen.db

HM. :

No es una buena práctica para guardar las direcciones de directorio en su base de datos. Para las imágenes, sólo tiene que guardar un nombre, por ejemplo abc.jpg, y no 'directorio / abc.jpg'. La lógica detrás de esto está claro, puede que tenga que enlazan con imágenes de diferentes páginas en su sitio web. Si agrega los directorios en su base de datos, será muy difícil, aunque no imossible de enlace a las imágenes y mostrarlas. En consecuencia, tratar de eliminar '../profiles/' del nombre. Entonces, cada vez que usted pueda mostrar la imagen, que será fácil para enlazarlo desde cualquier lugar de su sitio web. Por lo tanto, basta con omitir el bloque siguiente:

    $uploadDir = '../profiles/';

y cambiar su $ ruta de archivo como el siguiente:

$filePath = md5($file_name . microtime()) . substr($fileName , -5, 5);

Esto tiene dos ventajas. Los nombres de archivo que nunca volverá a ser sobrescritos, y luego, en aras de una capa sencilla de la seguridad, los estudiantes no serán identificables por los nombres de los archivos.

Entonces, cuando se desea un enlace a la imagen en su edición-picture.php , que va a escribir

"<img src='../profiles/".$row['imagePath']."' width='100' height='100' >"

y cuando se desea un enlace a la imagen de su profile.php , que va a escribir:

"<img src='profiles/".$row['imagePath']."' width='100' height='100' >" 

Por cierto, en el código que php, que está utilizando get_magic_quotes_gpc . En primer lugar, no es una práctica buena, a continuación, tratar de mantener su versión de PHP siempre actualizada. Php Web oficial, en relación con get_magic_quotes_gpc dice:

Advertencia Esta función ha dejado de utilizarse a partir de PHP 7.4.0. Basándose en esta función es sumamente desalentador.

Trate de usar otras funciones de seguridad php. Buena suerte.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=402409&siteId=1
Recomendado
Clasificación