Foros del Web » Programando para Internet » PHP »

Validacion y echo fuera de pagina

Estas en el tema de Validacion y echo fuera de pagina en el foro de PHP en Foros del Web. Hola a todos. Conseguí hacerme una página donde encriptaba las contraseñas de los usuarios. En otra página, tengo el formulario del login para entrar con ...
  #1 (permalink)  
Antiguo 29/01/2011, 05:27
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 22 años, 2 meses
Puntos: 1
Validacion y echo fuera de pagina

Hola a todos.

Conseguí hacerme una página donde encriptaba las contraseñas de los usuarios.

En otra página, tengo el formulario del login para entrar con "usuario" y "contraseña".

Debido a la forma de encriptar las contraseñas (usando AES_ENCRYPT), la forma de validación ha de ser un código php ANTES de <html><head><body>...

Dentro del código de validación, hay un echo ("Datos incorrectos").

¿Qué ocurre?... que, al estar fuera de HTML, lo muestra arriba del todo, moviendo la página, etc.

¿Me podríais echar un cable para poder colocar este echo en un sitio en concreto?

P.D.: he probado a usar un div y llamar a un css e incluso a partir el código para que el echo se viera donde quería y lo que conse´guí fue que me descolocó la página completamente...

Os dejo el código (que espero que le pueda servir a alguien más) con el echo marcado en rojo y gracias por adelantado y un saludo:

Código:
<?php
// NECESARIO PARA CREAR SESIONES
require_once("../incluye/sesion.php");
// INICIA SESIÓN
$sesion = new sesion();
// SI EL FORMULARIO HA SIDO ENVIADO, SE VALIDA
if(isset($_POST['submit'])){
// SE CREAN LAS VARIABLES
$nombreusuarios = $_POST['nombreusuarios'];
$claveusuarios = $_POST['claveusuarios'];
// SE VALIDA QUE SEAN VERDADERAS LAS VARIABLES
if(validarUsuario($nombreusuarios,$claveusuarios) == true)
{			
$sesion->set('nombreusuarios',$nombreusuarios);
// SI SON VERDADERAS, MANDA A SIGUIENTE PÁGINA
header("location: privado2.php");
} else { // SI SON FALSAS
echo "Verifica tu nombre de usuario y contraseña";
}}
// VALIDA EL NOMBRE Y LA CLAVE DE USUARIO
function validarUsuario($nombreusuarios,$claveusuarios)
{
// CONECTAR A LA BASE DE DATOS
$conexion = new mysqli("localhost","usuario","contrasena","bd");
// SE HACE LA CONSULTA
$consulta = "SELECT AES_DECRYPT(claveusuarios,'llave') FROM usuarios WHERE nombreusuarios = '$nombreusuarios';";
// RECOGE EL RESULTADO
$result = $conexion->query($consulta);
if($result->num_rows > 0){
$fila = $result->fetch_assoc();
// COMPARA LA CLAVE DE USUARIO
if(strcmp($claveusuarios,$fila["AES_DECRYPT(claveusuarios,'poliki')"]) == 0)	
// DEVUELVE VERDADERO			
return true;						
else
// DEVUELVE FALSO	
return false;
}
else
// DEVUELVE FALSO
return false;
}
?>
<HTML><HEAD></HEAD><BODY>.. MI PAGINA... </BODY></HTML>
  #2 (permalink)  
Antiguo 29/01/2011, 12:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Validacion y echo fuera de pagina

Todo lo que tienes que hacer es:

1. Antes del if donde verificas si se esta procesando el formulario ( isset($_POST[...]) crear una variable $msg = '';
2. Si los datos son incorrectos, en vez de hacer echo asignas el mensaje a la variable $msg = '<p class="tu-clase-css-para-errores">datos incorrectos</p>';
3. En el cuerpo de tu pagina agregas <?php echo $msg; ?>

Si no se ha procesado el formulario, entonces $msg sera una cadena vacia y no mostrara nada, de lo contrario, se vera el mensaje de error.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 31/01/2011, 00:56
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 22 años, 2 meses
Puntos: 1
Respuesta: Validacion y echo fuera de pagina

Muchísimas gracias "Triby".

La verdad es que no se me ocurrió intentarlo de esa manera.

Muchas gracias y un gran saludo:

Javy

Etiquetas: echo, fuera
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 21:30.