Foros del Web » Programando para Internet » PHP »

Ignora la validación

Estas en el tema de Ignora la validación en el foro de PHP en Foros del Web. tengo este código para validadar el cambio de contraseña funciona a medias no se porque: Código PHP: if (isset ( $_POST [ 'submit' ])){     if ((( strlen  ( ...
  #1 (permalink)  
Antiguo 02/10/2005, 04:01
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 16 años, 1 mes
Puntos: 0
Ignora la validación

tengo este código para validadar el cambio de contraseña funciona a medias no se porque:
Código PHP:
if (isset ($_POST['submit'])){
    if (((
strlen ($_POST['pass_new']) < 5) || strlen ($_POST['pass_new']) > 15 )){ 
    
$msg "CONTRASEÑA MUY CORTA O MUY LARGA"// esta parte no la verifica
    
}elseif (!(strlen ($_POST['pass_new']) == strlen ($_POST['pass2_new']))){
    
$msg "LA CONTRASEÑA REPETIDA NO COINCIDE"// esta parte no la verifica
    
}elseif (!($_POST['pass_new'] === $_POST['pass2_new'])){
    
$msg "LA CONTRASEÑA REPETIDA NO COINCIDE"// esta parte no la verifica
    
}
    
// sacamos la contraseña guardada
    
$sql ="SELECT pass FROM dr_anuncio WHERE id='$id'";
    
$res mysql_query($sql) or die (mysql_error());
    
    if (
$row mysql_fetch_array ($res)){
    
        if (
md5 ($_POST['old_pas']) != $row['pass']){
        
$msg "LA CONTRASEÑA ANTERIOR NO COICIDE"// esta parte si funciona perfecta
        
}else{
        
//Codificamos el pass
        
$pass_md5 =    md5 ($_POST ['pass_new']);
    
        
$sql_up "UPDATE dr_anuncio SET pass = '$pass_md5' WHERE id = '$id'";
        
$res mysql_query($sql_up) or die (mysql_error());
        
$msg "CONTRASEÑA CORRECTAMENTE MODIFICADA"// esta parte si funciona perfecta
        
}
    }

Vamos no se porque la parte de comparar las cadenas no la hace, espero que comenteis algo.
un saludo y gracias
__________________
Seguro que ahora me sale mejor!
  #2 (permalink)  
Antiguo 02/10/2005, 04:29
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 12 años, 5 meses
Puntos: 0
Pues hombre, ten en cuenta que las comparaciones se hacen con dos =, es decir, == y no con tres como lo tienes tu,===.
Otra cosa que puede que falle, es esta:
Código PHP:
if (!(strlen ($_POST['pass_new']) == strlen ($_POST['pass2_new']))) 
en vez de usar eso, que me a costado un poco saber si ahí había algún error, puesto que se acumulan muchos parentesis en poco espacio, sería usar lo siguiente:
Código PHP:
if (strlen($_POST["pass_new"])!=strlen($_POST["pass2_new"])) 
  #3 (permalink)  
Antiguo 02/10/2005, 05:25
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 16 años, 1 mes
Puntos: 0
Gracias por la respuesta pero, del mismo modo ignora las comparaciones, :(
__________________
Seguro que ahora me sale mejor!
  #4 (permalink)  
Antiguo 02/10/2005, 05:50
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por terror_zine
ten en cuenta que las comparaciones se hacen con dos =, es decir, == y no con tres como lo tienes tu,===.
El usar tres "=" también es una comparación válida ; este operador no solo compara por contenido sino por tipo.
Cita:
Iniciado por terror_zine
Otra cosa que puede que falle, es esta:
Código PHP:
if (!(strlen ($_POST['pass_new']) == strlen ($_POST['pass2_new']))) 
... De hecho esta bien, está negando lo que devuelva la comparación; si la comparación devuelve TRUE la convertirá en FALSE y viceversa.

www.php.net/language.operators

OJO!!!, solo intento aclarar por si existiera la duda, no digo que este en desacuerdo con terror_zine, por el contrario, igual te sugería hacer los cambios que menciona, simplificar tu código; para este caso una comparación por tipo viene sobrando y las condicionales pueden simplificarse haciendolas más directas --> lo que dijo!.

La verdad es que no hayo error con tu código... incluso lo he probado y funciona perfectamente. Quizá tu error sea de alguna diferencia del name del passwordbox o cuestiones por el estilo (cosas simples que se escapan)...

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 02/10/2005 a las 06:37
  #5 (permalink)  
Antiguo 02/10/2005, 06:04
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 16 años, 1 mes
Puntos: 0
Voy a poner el código del form que lo envia, porque le he dado mil vueltas y nada.
Código PHP:
<form id="Form1" name="Form1" action="<? echo $_SERVER['PHP_SELF']; ?>" method="POST" >
<? echo "$msg"?>
<input type="password" name="old_pas"  size="15">
<input type="password" name="pass_new" size="15">
<input type="password" name="pass2_new"  size="15">
<input type="submit" name="submit" value="actualizar">
</form>
En fin ya no se.

A lo que me comentas queria que la primera validación comprovara si tenian la misma cantidad de caracteres y si fuera así comprobar si relamente son identicas las 2 string por eso la otra verificación, pero ni comentando una u otra hace caso poniendo textos distintos.
__________________
Seguro que ahora me sale mejor!
  #6 (permalink)  
Antiguo 02/10/2005, 06:20
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 16 años, 1 mes
Puntos: 0
Ya lo tengo habia que añadir un else que cogiera la validacion y el update, de ese modo la variable $msg no se pisaba si tenia error.

Gracias por la ayuda
__________________
Seguro que ahora me sale mejor!
  #7 (permalink)  
Antiguo 02/10/2005, 09:50
 
Fecha de Ingreso: junio-2005
Mensajes: 28
Antigüedad: 12 años, 5 meses
Puntos: 0
Cita:
Iniciado por jam1138
El usar tres "=" también es una comparación válida ; este operador no solo compara por contenido sino por tipo.
Pues esto no lo sabia, asi que, gracias por la información.

Respecto a lo otro, tal vez me exprese mal y no queria decir que pudiese estar mal, sino que ese tipo de sintaxis es el que más errores y problemas suele dar, ya que el codigo queda un poco ¿"escondido"?

Lo dicho, gracias por hacerme un poquito más sabio.
  #8 (permalink)  
Antiguo 02/10/2005, 09:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por terror_zine
ese tipo de sintaxis es el que más errores y problemas suele dar, ya que el codigo queda un poco ¿"escondido"?
Totalmente de acuerdo .

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 08:10.