entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Error en php

Buenas chicos, estoy intentado hacer de modo segura una update de los datos para que el usuario los pueda modificar, el caso es que me da error, os muestro el codigo:

Este es el archivo perfi.php donde muestra el html:

<?php
include_once '../pruebas/conexion.php';

if (!isset ($_SESSION['usuario'])){
    header('Location: ../login.php');
};

    /* FUNCION GENÉRICA VALIDACIÓN USUARIO */

    $id = $_POST['id'];
    function verificarUsuario($id) {
        $sql_leer = 'SELECT usuario FROM usuarios WHERE id = '.$id.' AND usuario = '.$_SESSION['usuario'].' ';

        $gsnet = $pdo->prepare($sql_leer);
        $gsnet->execute($id);

        if ($gsnet->fetchColumn() > 0) return true;
        return false;
    };

     /* Se cargan los datos del usuario para mostrar en el FORM */

  $sql_leer = 'SELECT id,equipo,email,pass,thumb FROM usuarios WHERE usuario = '.$_SESSION['usuario'].'';

  $gsnet = $pdo->prepare($sql_leer);
  $gsnet->execute();

  $resultado = $gsnet->fetchAll();

?>
            <form method="POST" action="editar_usuario.php" enctype="multipart/form-data">
            <input type="text" class="form-control" placeholder="Equipo" name="equipo" value="<?php echo $resultado['equipo']?>">
            <input type="text" class="form-control" placeholder="Email" name="email" value="<?php echo $resultado['email']?>">
            <input type="text" class="form-control" placeholder="Contraseña" name="pass" value="<?php echo $resultado ['pass']?>">
            <input type="file" class="form-control" placeholder="Imagen" name="thumb" value="<?php echo $resultado ['thumb']?>">
            <input type="hidden" name="id" value="<?php echo $resultado['id']?>" >
            <button class="btn btn-primary mt-3">Editar</button>
            </form>

Y el archivo del action del form editar_usuario.php:

<?php session_start();

include_once '../pruebas/conexion.php';

/* FUNCION GENÉRICA VALIDACIÓN USUARIO */

$id = $_POST['id'];
function verificarUsuario($id) {
    $sql_leer = 'SELECT usuario FROM usuarios WHERE id = '.$id.' AND usuario = '.$_SESSION['usuario'].' ';

    $gsnet = $pdo->prepare($sql_leer);
    $gsnet->execute($id);

    if ($gsnet->fetchColumn() > 0) return true;
    return false;
};

/* Si nos viene POST realizamos un cambio en los datos */
if (isset($_POST['id'])) {
    $data = [
        'equipo' => $_POST['equipo'],
        'email' => $_POST['email'],
        'pass' => md5($_POST['pass']),
        'thumb' => $_POST['thumb'],
        'id' => $_POST['id']
    ];
    $sql_editar = 'UPDATE usuarios SET equipo=:equipo, email=:email, pass=:pass, thumb=:thumb WHERE id=:id';
    $sentencia_editar = $pdo->prepare($sql_editar);
    $sentencia_editar->execute($data);

    /* Verificación usuario. Si no es válido redirecciona. Si es válido continua */
    if (!isset($_POST['id']) || !verificarUsuario($id)){
        header('Location:home.php');

    }    
};

y este es el fallo que me da
<b>Notice</b>: Undefined index: equipo in <b>D:\xampp\htdocs\Proyectos\ProyectoDriversParadeClub\DriversParadeClub\view\perfil.view.php</b> on line <b>160</b><br >
">
en todas las opciones del form, haber si veéis el fallo, gracias de antemano

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @flowcou,

te está dando el error en la línea 160 de perfil.view.php, pero los archivos que ponés en la pregunta no parecen ser este, porque no tienen tantas líneas...

Tampoco se ve una llamada con un include() o requiere() a perfil.view.php.

Todo indica que perfil.view.php espera un vector con la posición "equipo" seteado que no tiene cargado ese valor, y por eso el Notice.

Si perfil.view.php está esperando que esté definido $resultado después de ejecutar la query, verificá que se incluya después de hacer la query y no antes, por ejemplo.

Pasanos el resto del código y lo podremos ver mejor!

Saludos cordiales.

PD: la función verificarUsuario() la usás nada más que para redireccionar, en vez de usarla al principio para ver si la acción está permitida. Si te hace falta ahondar en ese tema, abrí otra pregunta.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta