Foros del Web » Programando para Internet » PHP »

Un problema clasico...

Estas en el tema de Un problema clasico... en el foro de PHP en Foros del Web. Hola a todos... Estuve revolviendo el foro para conseguir una solucion, y apesar de haber encontrado mucha informacion util, no encuentro una que sea BIEN ...
  #1 (permalink)  
Antiguo 13/11/2005, 13:56
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Un problema clasico...

Hola a todos...

Estuve revolviendo el foro para conseguir una solucion, y apesar de haber encontrado mucha informacion util, no encuentro una que sea BIEN puntual.

EL PROBLEMA QUE TENGO:

Necesito validar dos campos "TITULO" y "MENSAJE", y por supuesto, no deseo que me envien esos campos vacios... en el foro encontre mil formas de hacerlo, desde utilizando Javascript (peligroso si el user no lo tiene activado), hasta con una funcion "empy()".

Pero nada de esto que encontre me sirve si el usuario pone un ESPACIO VACIO como "titulo" por ejemplo, ya que la variable tiene un caracter y se validara como correcta.

¿Como hacen ustedes para salir de este enredo? ¿Tal vez utilizando una expresion regular? ¿haciendo un for desde 0 hasta strlen($titulo) y chequeando una por una que sea diferente a " " ?

De antemano, muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 13/11/2005, 14:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
Puedes verificar que no está vacío con

if ($variable != "")
{ lo que sea
}
  #3 (permalink)  
Antiguo 13/11/2005, 14:31
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Hola, gracias por responder. Te cuento, una de las primeras cosas que naturalmente se me ocurrio fue hacer eso que decis. Pero aun asi no podria escapar al caso que el usuario meta un " " (espacio vacio) o varios...

Lo solucione por el momento con esto, de paso si les sirve lo tienen aqui y si saben alguna forma mas optima, soy todo ojos.

Código PHP:
    // CONTROL DEL TITULO

    
$titulo $_POST['titulo'];
    
$vacio 0;

    if ( 
strlen($titulo) > ) {

        for (
$i 0$i <= strlen($titulo); $i++) {
            if ( 
$titulo[$i] == " ") {
                
$vacio++;
            }
        }

    }


    if ( 
$vacio == strlen($titulo) ) {
        
$msg1 "<b>*</b> El mensaje debe tener un titulo válido.";
        
header("Location: /foros/nuevo.php?msg=".$msg1);
        exit(); 
// sin este exit() no funciona.
    
} else {
        
$titulo htmlentities($_POST['titulo']);
    } 
Espero a alguien mas le sirva de ayuda, un saludo.
  #4 (permalink)  
Antiguo 13/11/2005, 14:31
Avatar de c4r1o5  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 12 años, 9 meses
Puntos: 1
Prueba eliminando todos los espacios de la cadena, si obtienes un resultado nulo, quiere decir que solo introdujeron espacios vacios, tenia el codigo pero no lo encuentro.
__________________
¿Que importa el resto?, el resto es simplemente la humanidad, hay que ser superior a humanidad, por fuerza, por altura de alma, por desprecio ...
  #5 (permalink)  
Antiguo 13/11/2005, 14:41
Avatar de jc_moty  
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 477
Antigüedad: 12 años, 2 meses
Puntos: 1
A ver, porque no probas con trim.
Aqui te dejo un pequeño Ejemplo:
Código PHP:
<?php
    $texto 
"En un lugar de la Mancha :) ...        ";

    echo 
trim($texto);           // "En un lugar de la Mancha :) ..."
    
echo trim($texto" \t.");   // "En un lugar de la Mancha :)"
?>
Saludos
  #6 (permalink)  
Antiguo 14/11/2005, 22:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
aha !

Me gusto lo del TRIM, gracias por la data JC ! :)

Saludos.
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 20:46.