Foros del Web » Programando para Internet » PHP »

No permitir enviar mensaje vacío a Tagboard

Estas en el tema de No permitir enviar mensaje vacío a Tagboard en el foro de PHP en Foros del Web. Hola, estoy haciendo mi propio TagBoard, "Minichat", para mi web y lo voy haciendo todo, pero la duda que tengo es la del título, que ...
  #1 (permalink)  
Antiguo 18/02/2006, 12:05
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
No permitir enviar mensaje vacío a Tagboard

Hola,

estoy haciendo mi propio TagBoard, "Minichat", para mi web y lo voy haciendo todo, pero la duda que tengo es la del título, que le doy vueltas y no se me ocurre cómo...

Quiero hacer que el usuario no pueda enviar un mensaje vacío. Y matizando la palabra "vacío", ya he puesto el "empty($mensaje)", pero se puede seguir simulando un mensaje en blanco poniendo un sólo espacio.

¿Cómo puedo evitar eso?


PD: También me gustaría escuchar vuestra opinión sobre cuál es la mejor forma para guardar la hora (siguiendo el formato... 19:04) en la base de datos. Por no abrir un post por tan poca cosa :P
  #2 (permalink)  
Antiguo 18/02/2006, 12:13
 
Fecha de Ingreso: agosto-2005
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 0
No sé si es todo lo eficaz que haría falta, pero podrías validarlo en javascript de esta forma

if (formulario.nombre.value.length < 4) {
alert("Escriba por lo menos 4 caracteres en el campo \"campo\".");
  #3 (permalink)  
Antiguo 18/02/2006, 12:48
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
4 espacios...
  #4 (permalink)  
Antiguo 18/02/2006, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
PD: También me gustaría escuchar vuestra opinión sobre cuál es la mejor forma para guardar la hora (siguiendo el formato... 19:04) en la base de datos. Por no abrir un post por tan poca cosa :P
Las "Base de datos" ... todas gestionan tipo de dato como "fecha" .. así que lo mejor es usar su formato de fecha con hora própio. Si usas Mysql .. esta dispone de su tipo de campo: DATETIME que te guarda la fecha completa con hora (completa .. con segundos) .. Tienes funciones en SQL como "NOW()" para darte la fecha con hora actual del servidor. En definitiva, no tienes que usar NADA de PHP para ingresar la hora de registro de esos mensajes en tu Tagboard si usas 100% SQL.

Con los campos de tipo "fecha" standares del motor de BBDD que uses, te facilitaran muchas taréas en el trabajo de fechas como podrás ver.

Sería algo tipo:

$sql="INSERT INTO tabla (id,comentario,fecha) VALUES ('','$comentario',NOW())";

Un saludo,
  #5 (permalink)  
Antiguo 18/02/2006, 14:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Quiero hacer que el usuario no pueda enviar un mensaje vacío. Y matizando la palabra "vacío", ya he puesto el "empty($mensaje)", pero se puede seguir simulando un mensaje en blanco poniendo un sólo espacio.
Limpia tu cadena de espacios por delante o al final y saltos del línea con:

trim()
www.php.net/trim

if (empyt(trim($titulo)){
echo "titulo vacio";
}


También puedes usar expresiones regularas para no permitir ciertos caracteres ...

Y acuerdate a la hora de presentar tus mensajes de aplicar:

htmlentities()
http://www.php.net/htmlentities

Por qué sino más de uno te escribirá HTML ahí y tu página lo interpretará. Por lo menos con htmlentities() no se interpretará (por qué se sustituyen caracteres como < en su "entidad" HTML).

Y también stripslashes() (si corresponde) para que no tengas problemas con acentos y caracteres que se "escapan" (si usas magic_quote_gpc a ON como suele ser lo común en tu configuración de PHP).
Un saludo,
  #6 (permalink)  
Antiguo 18/02/2006, 15:04
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
¿Vendría a ser esto?

Cita:
echo htmlentities(stripslashes($mensaje));
  #7 (permalink)  
Antiguo 18/02/2006, 15:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Si, .. y con un trim() a su vez para todo lo que resulte de eso.

Un saludo,
  #8 (permalink)  
Antiguo 18/02/2006, 15:15
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Sobre lo del mensaje vacío...
Cita:
if (empty(trim($mensaje))) {
¿No es así?


Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$'
  #9 (permalink)  
Antiguo 18/02/2006, 15:23
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Todo lo demás funciona perfectamente

Última edición por david_M_G; 18/02/2006 a las 15:40
  #10 (permalink)  
Antiguo 18/02/2006, 16:13
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Arreglado!!!

En vez de hacerlo todo junto, lo hice en dos tiempos:


Código PHP:
<? $sinespacios trim($mensaje);
if (empty(
$sinespacios)) { ?>

Muchas graciass Cluster!
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 10:28.