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

2votos

problema con UPDATE password= hash

hola amigos tengo este problemita cuando trato de actualizar el password:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:

sera que mi UPDATE esta mal formulado, anexo el codigo y gracias de ante mano

<?php 
 { 

  if(isset($_POST['edita'])) { 

  if($_POST['password'] != $_POST['usuario_clave_conf']) { 

echo "<div class='col s12 card-panel blue lighten-2 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
¡ Ups Aviso: Las Contraseñas Ingresadas no Coinciden ! 
</h5>
</div>";
header("refresh:5;mipass.php");

            }else { 

$user = $_SESSION['user']; 
$password = $_POST['password'];

$sql = "UPDATE usuarios SET password= :password WHERE user= :user"; //Creamos la select
$perfil = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
$password= hash('sha256', $_POST['password']);
$perfil->bindParam(':password',$password,PDO::PARAM_STR);
$perfil->execute();
if($sql) { 

header("refresh:5;home.php");

$mensaje = "<div class='col s12 card-panel cyan darken-4 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>¡ Exelente: Contraseña Actualizada Correctamente !</h5></div>";

                }else { 

    header("refresh:5;mipass.php");

$mensaje = "<div class='col s12 card-panel blue lighten-2 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
¡ Ups Aviso: No se Pudo Cambiar la Contraseña ! 
</h5>
</div>";

                } 
            } 
        }

        else { 

                } 
    }

?>

2 Respuestas

0voto

yoclens Puntos1770

ya lo resolvi amigo era que no hacia uso de la variable de session anexo como deberia quedar

$user = $_SESSION['user']; 
$password = $_POST['password'];

$sql = "UPDATE usuarios SET password= :password WHERE user= :user"; //Creamos la select
$perfil = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
$password= hash('sha256', $_POST['password']);
$perfil->bindParam(':password',$password,PDO::PARAM_STR);
$perfil->bindParam(':user', $_SESSION['user'],PDO::PARAM_STR);
$perfil->execute();
if($perfil) { 

gracias amigos

3votos

magarzon Puntos30650

Si no me equivoco, es porque has asociado el parámetro password (bindParam), pero no el user.

0voto

Leonardo-Tadei comentado

Yo veo lo mismo que @magarzon : falta el bind del segundo parámetro de la query.

0voto

yoclens comentado

hola @Leonardo-Tadei , @magarzon gracias por sus respuestas hecho algunas modificacion y ahora no hay errores y hace el proceso bien el unico problemaita es que no cambia el pass en la bd anexo el codigo de como va quedando, ah otra cosa creen que a este codigo se le puede agregar la clave actual ejemplo clave actual, nueva clave, confirmar nueva clave, ya que asi como lo tengo es como modelo viejo

<?php 
 { 

  if(isset($_POST['edita'])) { 

  if($_POST['password'] != $_POST['usuario_clave_conf']) { 

echo "<div class='col s12 card-panel blue lighten-2 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
¡ Ups Aviso: Las Contraseñas Ingresadas no Coinciden ! 
</h5>
</div>";
header("refresh:5;mipass.php");

            }else { 

$user = $_SESSION['user']; 
$password = $_POST['password'];

$sql = "UPDATE usuarios SET password= :password WHERE user= :user"; //Creamos la select
$perfil = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
$password= hash('sha256', $_POST['password']);
$perfil->bindParam(':password',$password,PDO::PARAM_STR);
$perfil->bindParam(':user', $_POST['user'],PDO::PARAM_STR);
$perfil->execute();
if($perfil) { 

header("refresh:5;home.php");

$mensaje = "<div class='col s12 card-panel cyan darken-4 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>¡ Exelente: Contraseña Actualizada Correctamente !</h5></div>";

                }else { 

    header("refresh:5;mipass.php");

$mensaje = "<div class='col s12 card-panel blue lighten-2 center'>
<h5 class='black-text text-darken-2 center CONDENSED LIGHT5'>
¡ Ups Aviso: No se Pudo Cambiar la Contraseña ! 
</h5>
</div>";

                } 
            } 
        }

        else { 

                } 
    }

?>

0voto

magarzon comentado

¿user es un campo de tu tabla usuarios? A ver si va a ser username o algo parecido, y por eso no se actualiza

0voto

yoclens comentado

mi tabla se llama usuarios y los campos son id - user - password - idnivel - etc

0voto

morgooth comentado

prueba dejando la consulta sql en duro dentro de la variable $sql, quizás te faltan las comillas

0voto

Leonardo-Tadei comentado

y cuando lo ejecutás te aparece el mensaje "Ups Aviso: No se Pudo Cambiar la Contraseña" o te aparece el de "contraseña actualizada correctamente" ?

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