Foros del Web » Programando para Internet » PHP »

Como comprobar que ha escrito un password

Estas en el tema de Como comprobar que ha escrito un password en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario de registro donde los usuarios escriben tres variables, nombre, apellido y password. Para comprobar que hayan escrito en los ...
  #1 (permalink)  
Antiguo 07/01/2008, 15:11
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Como comprobar que ha escrito un password

Hola a todos,

tengo un formulario de registro donde los usuarios escriben tres variables, nombre, apellido y password.

Para comprobar que hayan escrito en los tres campos (ya que los consideraré como obligatorios) he escrito este código:
Código PHP:
if($_POST['name']==""){
        echo 
"<p>You need to write your name in order to check in</p>";
        }
if(
$_POST['surname']==""){
        echo 
"<p>You need to write your surname in order to check in</p>";
        }
if(
$_POST['password']==""){
        echo 
"<p>You need a password to create your account</p>"
Con lo que pretendía que al estar un campo vacía se imprimierá el mensaje de error. Funcionan los dos primeros, pero el de password siempre imprime el mensaje "You need a password to create your account".

Alguien sabe por qué puede ser?

Saludos,
Xavi
  #2 (permalink)  
Antiguo 07/01/2008, 15:19
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Como comprobar que ha escrito un password

Puedes poner el código del formulario.

Por cierto, si utilizas la funcion empty() te será más cómodo:
Código PHP:
if (empty($_POST['password'])){
        echo 
"<p>You need to write your surname in order to check in</p>";
        } 
  #3 (permalink)  
Antiguo 07/01/2008, 15:27
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Como comprobar que ha escrito un password

Y para evitar que pongan espacios en blanco, usa la función trim() al inicio de tu script:

Código PHP:
function trim_value(&$value) { 
    
$value trim($value); 
}
 
array_walk($_POST'trim_value'); 
Ahora, si te imprime el mensajes porque estas poniendo el nombre del campo mal. Muestra el codigo de tu formulario, o al inicio de tu script has un:

Código PHP:
echo '<pre>';
print_r($_POST);
echo 
'</pre>';
 
exit; 
Eso te imprimirá todos los valores que te llegan del formulario. Ahi ves cuál es el error

Un saludo,
  #4 (permalink)  
Antiguo 07/01/2008, 15:30
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: Como comprobar que ha escrito un password

Hola!

Gracias por ambas rapidísimas respuestas!

Os paso el código del formulario.
Código PHP:
<form action="registration.php" method="post">
        
                <
p>Name: <input type="text" name="name" /></p>
        
                <
p>Surname: <input type="text" name="surname" /></p>
        
                <
p>Password: <input type="password"></p
De mientras probaré el código. Muchas gracias!
  #5 (permalink)  
Antiguo 07/01/2008, 15:34
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Como comprobar que ha escrito un password

Te falta ponerle nombre al campo password
Código PHP:
<input type="password" name="password"
Un saludo,
  #6 (permalink)  
Antiguo 07/01/2008, 15:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: Como comprobar que ha escrito un password

Ups, pequeno importante detalle que se me había pasado por alto.

Muchas gracias!

Por cierto, saben alguna manera en que pueda comprobar si hay algo escrito en cada uno de los campos obligatorios sin tener que poner muchas veces IF.

De momento el único método que se me ocurre sería este:
Código PHP:
if($_POST['name']!=="" AND $_POST['surname']!=="" AND $_POST['password']!=="" AND checkdate($_POST['mes'],$_POST['dia'],$_POST['ano'])==1){
     echo 
"Registration completed. <br /> <a href='login.html'>Begin</a> <br />";
        }else{
     
if(
$_POST['name']==""){
        echo 
"<p>You need to write your name in order to create your account</p>";
        }
if(
$_POST['surname']==""){
        echo 
"<p>You need to write your surname in order to create your account</p>";
        }
if(
$_POST['password']==""){
        echo 
"<p>You need a password to create your account</p>";
        }
if(
checkdate($_POST['mes'],$_POST['dia'],$_POST['ano'])!==1){
        echo 
"Nice try! But you couldn't birth on ",$_POST['dia'];
        if(
$_POST['dia']==or 21 or 31){
                                  echo 
"st";
                                  }elseif(
$_POST['dia']==or 22){
                                  echo 
"nd";
                                  }elseif(
$_POST['dia']==or 23){
                                  echo 
"rd";
                                  }else{
                                  echo 
"th";
                                  }
        echo 
" of ",$_POST['mes']," "$_POST['ano'],".<br />","That date did not exist. <a href='registro.html'>Try it again</a>";
}} 
Pero no me acaba de convencer.
Gracias una vez más por la ayuda.
Saludos,
Xavi
  #7 (permalink)  
Antiguo 07/01/2008, 15:48
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Como comprobar que ha escrito un password

Prueba asi:

Código PHP:
$campos_obligatorios = array(
    
"name"=>"<p>You need to write your name in order to create your account</p>",
    
"surname"=>"<p>You need to write your surname in order to create your account</p>",
    
"password"=>"<p>You need a password to create your account</p>"
);
 
$f 0;
 
foreach(
$campos_obligatorios as $campo=>$error) {
    
$val trim($_POST[$campo]);
    if(empty(
$val)) {
        echo 
$error;
        
$f 1;
    }
}
if(
$f == 0) {
    echo 
"Registration completed. <br /> <a href='login.html'>Begin</a> <br />"

Un saludo,

Última edición por okram; 07/01/2008 a las 16:36
  #8 (permalink)  
Antiguo 07/01/2008, 16:00
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 16 años, 5 meses
Puntos: 2
De acuerdo Re: Como comprobar que ha escrito un password

Uau!

Necesité algo de tiempo para procesar la información pero lo entendí!!!

Genial!

Muchas gracias!

Última edición por donfalcone; 07/01/2008 a las 16:16
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 12:32.