¿Actualizar imágen de perfil al momento de cargarla?
Publicado por David (9 intervenciones) el 19/04/2020 16:42:07
Hola gente. Tengo una página de perfil de usuario. En el siguiente código consigo que el usuario actualice su foto de perfil pero no logro que los cambios se vean al momento, es decir, funciona pero para ver el cambio de foto tengo que clicar sobre la url del navegador o salir de la sesión y volver a entrar. Ojala me puedan ayudar,gracias. Código a continuación.
CÓDIGO DE PERFIL-VISTA.PHP:
CÓDIGO DE PERFIL-CONTROLADOR.PHP
CÓDIGO DE PERFIL-MODELO.PHP:
CÓDIGO DE PERFIL-VISTA.PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
session_start();
$datosUsuario = $_SESSION["datosUsuario"];
require_once "../controladores/perfil-controlador.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo $datosUsuario["nombre_usuario"]; ?></title>
<?php require_once "../css/bootstrap/bootstrap-cdn-head.php";?>
<link rel="stylesheet" href="../css/custom-style.css">
</head>
<body>
<header>
<?php
require_once "../vistas/header-vista.php";
?>
</header>
<main class="perfil">
<div class="container pt-4">
<div class="row jumbotron portada">
</div>
<div class="col-md-6 mb-4 imagen-perfil">
<img class="rounded-circle z-depth-2" alt="100x100" src="../img/usuarios/<?php echo $datosUsuario["imagen_usuario"]; ?>"
data-holder-rendered="true">
</div>
<div class="row d-flex flex-column text-center jumbotron descripcion">
<div class="contenido">
<h2><?php echo $datosUsuario["nombre_usuario"] ." ". $datosUsuario["apellidos_usuario"]; ?></h2>
<p><?php echo $datosUsuario["descripcion"]; ?></p>
<p><strong>Estado civil:</strong><?php echo $datosUsuario["relacion"]; ?></p>
<p><strong>Lugar de residencia:</strong><?php echo $datosUsuario["pais_usuario"]; ?></p>
<p><strong>Miembro desde:</strong><?php echo $datosUsuario["fecha_registro_usuario"]; ?></p>
<p><strong>Género:</strong><?php echo $datosUsuario["genero_usuario"]; ?></p>
<p><strong>Fecha de nacimiento:</strong><?php echo $datosUsuario["nacimiento_usuario"]; ?></p>
<div>
<form method="post" action="" enctype="multipart/form-data" class="d-flex flex-column text-center">
<button class="btn btn-primary" id="cambiarFoto" name="cambiarFoto" type="submit">Cambiar Foto</button>
<button class="btn btn-success" name="cambiarPortada" type="submit">Cambiar Portada</button>
<div class="custom-file">
<input type="file" class="custom-file-input" name="botonSubida">
<label class="custom-file-label" for="botonSubida">Selecciona imagen</label>
</div>
</form>
</div>
</div>
</div>
</div>
</main>
<?php require_once "../css/bootstrap/bootstrap-cdn-footer.php";?>
</body>
</html>
CÓDIGO DE PERFIL-CONTROLADOR.PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
// guarda id de usuario
$id_usuario = $datosUsuario["id_usuario"];
// guarda imagen perfil usuario antes de actualizar
$imagenPerfilActual = $datosUsuario["imagen_usuario"];
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["cambiarFoto"])) {
$imagen = $_FILES["botonSubida"]["name"];
$directorioServidor = "../img/usuarios/" . basename($imagen);
$directorioOrigen = $_FILES["botonSubida"]["tmp_name"];
// si no ha seleccionado imagen
if ($imagen == "") {
// carga en sesion la imagen que tenia antes de darle al botón de cambiar foto
$_SESSION["datosUsuario"]["imagen_usuario"] = $imagenPerfilActual;
// carga en sesión el array de datos del usuario con laimagen que tenía para que no se quede sin imagen
$datosUsuario = $_SESSION["datosUsuario"];
echo "<script>alert('Seleccione una imágen')</script>";
echo "<script>open.window('../vistas/perfil-vista.php?u_id=".$id_usuario."' , '_self')</script>";
}
else {
// valida directorio origen
$check = getimagesize($directorioOrigen);
if($check !== false) {
// si valida actualiza imagen en directorio
move_uploaded_file($directorioOrigen, $directorioServidor);
// se ejecuta código de update sql en perfil.modelo.php
require_once "../modelos/perfil-modelo.php";
// valida update en base de datos
if ($actualizacionExitosa) {
// carga en sesión la nueva imagen
$_SESSION["datosUsuario"]["imagen_usuario"] = $imagen;
$datosUsuario = $_SESSION["datosUsuario"];
echo "<script>alert('La imagen ha sido cargada correctamente')</script>";
echo "<script>open.window('../vistas/perfil-vista.php?u_id=".$id_usuario."' , '_self')</script>";
}
else {
// carga en sesion la imagen que tenia antes de darle al botón de cambiar foto
$_SESSION["datosUsuario"]["imagen_usuario"] = $imagenPerfilActual;
// carga en sesión el array de datos del usuario con laimagen que tenía para que no se quede sin imagen
$datosUsuario = $_SESSION["datosUsuario"];
echo "<script>alert('Seleccione una imágen')</script>";
echo "<script>open.window('../vistas/perfil-vista.php?u_id=".$id_usuario."' , '_self')</script>";
}
}
// si no valida imagen error
else {
echo "<script>alert('El archivo seleccionado no es una imagen')</script>";
echo "<script>open.window('../vistas/perfil-vista.php?u_id=".$id_usuario."' , '_self')</script>";
}
}
}
}
?>
CÓDIGO DE PERFIL-MODELO.PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// crea conexión al servidor
$conexion = new mysqli("localhost", "root", "", "zero");
// variables de usuario que hay en sesión
$email = $datosUsuario["email_usuario"];
// carga la imagen nueva en base de datos
$update = "update usuarios set imagen_usuario = '$imagen' where email_usuario = '$email'";
$actualizaUsuario = $conexion->query($update);
// valida update
if ($actualizaUsuario) {
$actualizacionExitosa = true;
}
else {
$actualizacionExitosa = false;
}
//cierra conexion a base de datos zero
mysqli_close($conexion);
?>
Valora esta pregunta
0