PHP - Porque devuelve false esta condición?

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Porque devuelve false esta condición?

Publicado por Tomas (24 intervenciones) el 25/11/2014 15:35:05
Necesito que la condición devuelva true si el usuario ha introducido un espacio en blanco, un numero, no ha introducido nada o el string tiene numeros

¿ un string puede tener numeros o solo letras?
1
if((!$_POST['nombre'] ) || ($_POST['nombre']== " ") || y algo mas.){echo "no has introducido bien tu nombre";}else{echo "tu nombre es $_POST['nombre'];"}

ese "algo mas" he probado con:
!is_string: me devuelve false,tambien si le escribo pedro54
is_numeric: true solo con numeros, si escribo 4230948vgheuibvg(o lo que sea), false.
siendo false el segundo echo.
que condicion pongo para que si el usuario se le escapa un numero salga true
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porque devuelve false esta condición?

Publicado por xve (6935 intervenciones) el 25/11/2014 22:14:21
Hola Tomas, tu dices que devuelve true si:
- el usuario ha introducido un espacio en blanco
- un numero
- no ha introducido nada
- el string tiene números

Según entiendo, siempre hay que mostrarlo... cuando no hay que mostrar el nombre?? o cuando ponga letras es cuando no hay que mostrarlo??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Porque devuelve false esta condición?

Publicado por Tomas (24 intervenciones) el 25/11/2014 22:19:40
solo tiene que mostrarlo cuando tiene letras. si pongo !is_string o is_numeric ambas aceptan palabras alfanumericas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres, no números.

Publicado por xve (6935 intervenciones) el 25/11/2014 22:45:40
Hola Tomas, si solo tienes que permitir cuando ha entrado letras, entiendo que si "no ha introducido nada", entonces tampoco es correcto, verdad?

La manera correcta, seria con una expresión regular... por ejemplo este código valida que el nombre solo tenga caracteres en minúscula o mayúscula. Cualquier otro carácter como un numero, espacio, etc... te devolverá incorrecto.
1
2
3
4
5
6
7
8
9
10
<?php
$nombre = "pepe";
$pattern = '/^[a-zA-z]*$/';
if(preg_match($pattern, $nombre))
{
    echo "correcto";
}else{
    echo "incorrecto";
}
?>

Coméntanos ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres, no números.

Publicado por tomas (24 intervenciones) el 26/11/2014 21:34:26
Sí , de hecho estaba usando expresiones regulares(i todo funciona bien), pero tengo un ejercicio que me pide que use el request con un par de funciones(una de las cuales: htmlspecialchars), para que si el susuario introdujera "Tomas", le apareciera sin comillas o si escribiera <tomas>, sin los signos <> etc. I no puedo hacerlo si tengo expresiones regulares. Poreso estaba mirando como hago para que esa condicion funcione.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres, no números.

Publicado por xve (6935 intervenciones) el 26/11/2014 22:15:28
Hola Tomas, no se si te he entendido bien, pero si puedes utilizar htmlspecialchars...

1
if(preg_match($pattern, htmlspecialchars($nombre)))

No se si te puede servir...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres, no números.

Publicado por tomas (24 intervenciones) el 26/11/2014 22:37:05
Pero htmlspecialchars, lo uso cuando el nombre tiene caracteres invalidos , entonces con eso los quito. pero si uso expresiones regulares no me hara falta usar el htmlspecialchars porque las expresiones regulares son para que de error siempre que haya caracteres invalidos.
Ahora el ejercicio que tengo me pide que use htmlspecialchars para quitar los caracteres especiales. Pero si tengo una expresión regular no habra caracteres espciales, porque se le advertira al usuario que ha introducido mal el nombre. Poreso en la condicion que puse necesito que si el usuario introduce t0mas le diga que esta mal.
Ahora que lo pienso el is_string es para cualquier tipo de cadena, un id (ej: 0014k) es una cadena de caracteres si no lo tratamos como numero.
entonces como hago para que detecte "t0mas" mal , sin expresiones regulares.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres sin utilizar expresiones regulares

Publicado por xve (6935 intervenciones) el 27/11/2014 08:05:48
Hola Tomas, ahora te he entendido perfectamente!!!

La verdad es que para hacerlo sin expresiones regulares, solo se me ocurre leer carácter por carácter... algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$nombre = "pepe";
 
$esCadena=true;
for($i=0;$i<strlen($nombre);$i++)
{
    $valorAscii=ord($nombre[$i]);
    if(($valorAscii>=65 && $valorAscii<=90) || ($valorAscii>=97 && $valorAscii<=122))
    {
        # es un caracter 
    }else{
        # No es un caracter
        $esCadena=false;
        break;
    }
}
 
if($esCadena)
{
    echo "correcto";
}else{
    echo "incorrecto";
}
?>

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres sin utilizar expresiones regulares

Publicado por Tomas (24 intervenciones) el 28/11/2014 16:38:25
Segun mis amigos hay una forma más simple. En unos dias comento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 24 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar que únicamente se introduzcan caracteres sin utilizar expresiones regulares

Publicado por Tomas (24 intervenciones) el 30/11/2014 19:34:33
Pues no, mis amigos tambien lo hacen mal, pensaba que podian hacerlo solo con el if y funciones pero no, no tienen en cuenta si el usuario introduce "t0mas". Me quedo con las expresiones regulares aunque no pueda hacer el ejercicio.
Gracias por responder.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar