Foros del Web » Programando para Internet » PHP »

Cambio de contraseña

Estas en el tema de Cambio de contraseña en el foro de PHP en Foros del Web. Buenas tardes. En el script de abajo, actualizo una tabla para el cambio de contraseña. La primera vez que accedo para cambiar lo hace todo ...
  #1 (permalink)  
Antiguo 05/10/2008, 11:46
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 9 meses
Puntos: 0
Cambio de contraseña

Buenas tardes.
En el script de abajo, actualizo una tabla para el cambio de contraseña.

La primera vez que accedo para cambiar lo hace todo bien, incluso los controles de errores que he puesto.
Pero la segunda vez que entro, ya hace la actualización saltándose todos los controles de los errores. Por ejem. cambia la contraseña aunque tenga solo r dígitos.

Llevo varias horas intentando ver el fallo, pero no lo veo. Si alguien puede echarme una mano se lo agradezco.

$colname_usuario = "-1";
if (isset($_GET['id'])) {
$colname_usuario = $_GET['id'];
}
mysql_select_db($database_remota, $remota);
$query_usuario = sprintf("SELECT * FROM users WHERE id = %s", GetSQLValueString($colname_usuario, "int"));
$usuario = mysql_query($query_usuario, $remota) or die(mysql_error());
$row_usuario = mysql_fetch_assoc($usuario);
$totalRows_usuario = mysql_num_rows($usuario);

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

if($_POST['passant'] != $row_usuario['pass'])
$error_ant="*Error: La contraseña antigua no es la suya, inténtelo de nuevo";

if ((isset($_POST["pass"])) && ($_POST["pass"] == "") || strlen($_POST["pass"])<6 || strlen($_POST["pass"])>10)
$passfalta="* Ponga una contraseña valida entre 6 y 10 caracteres";

if (!es_email($_POST["email"]))
$emailmal="* Ponga una dirección email válida";


else{
$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$updateSQL = sprintf("UPDATE users SET pass=%s, email=%s, `level`=%s WHERE id=%s",
GetSQLValueString($_POST['pass'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['level'], "int"),
GetSQLValueString($_POST['id'], "int"));

mysql_select_db($database_remota, $remota);
$Result1 = mysql_query($updateSQL, $remota) or die(mysql_error());

$updateGoTo = "#";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}
}
}
  #2 (permalink)  
Antiguo 05/10/2008, 12:01
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Cambio de contraseña

puede ser esto

if ((isset($_POST["pass"])) && ($_POST["pass"] == "")

etas diciendo que SI la pass esta definida Y la pass es igual a vacia deberias incluir el negador !


if ((isset($_POST["pass"])) && ($_POST["pass"] !== "")

a si le dices que si la pass es distinta de vacia

Suerte y si no es eso postea de nuevo

PD. y en ese mismo if cambiaria los OR || por AND &&, se deberian cumplir todas esas condiciones y no darlas como opciones
  #3 (permalink)  
Antiguo 05/10/2008, 13:54
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Cambio de contraseña

Hola Jaronu.
No es eso, no le pongo el negador por que si está vacía da error para que se ponga, una vez puesta ya no da error, si se cumplen el resto de condiciones.

Yo creo que es un problema en el recorrido del script, pero no lo encuentro.

Gracias
  #4 (permalink)  
Antiguo 05/10/2008, 14:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Respuesta: Cambio de contraseña

Creo que no

if ((isset($_POST["pass"])) && ($_POST["pass"] == "") || strlen($_POST["pass"])<6 || strlen($_POST["pass"])>10)

esta linea dice:

SI esta definido $_POST["pass"]) Y es identico a vacio O el pass es mayor de 6 O menor de 10

prueba asi

if ((isset($_POST["pass"])) || ($_POST["pass"] !== "") && strlen($_POST["pass"])<6 && strlen($_POST["pass"])>10)

dee todas formas revisate este EJEMPLO

http://www.forosdelweb.com/f18/aport...dadizo-569102/

Última edición por jaronu; 05/10/2008 a las 14:09
  #5 (permalink)  
Antiguo 05/10/2008, 14:55
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Cambio de contraseña

Gracias Jaronu, echaré un vistazo al aporte.
Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.