Foros del Web » Programando para Internet » PHP »

Problemas con $_POST

Estas en el tema de Problemas con $_POST en el foro de PHP en Foros del Web. Hola a todos: En primer lugar os cuento la mecánica de la página que me da error. Es un formulario de login ( http://misitio.es/login ) ...
  #1 (permalink)  
Antiguo 27/01/2009, 04:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 8 meses
Puntos: 0
Problemas con $_POST

Hola a todos:

En primer lugar os cuento la mecánica de la página que me da error.
Es un formulario de login (http://misitio.es/login) el cual se envía a sí mismo la información y la procesa.
En caso de ser un login correcto redirige la página a la zona restringida (http://misitio.es/admin).
En caso de ser incorrecto se queda en la página del login y muestra el formulario de nuevo con un aviso:
Código HTML:
<div style="color:#FF0000;">Usuario o contraseña no válidos</div> 
En la página de login incluyo una página de funciones.
Una vez incluida, ejecuto una función que me evalua si se ha ejecutado el formulario, y en ese caso evalua si es correcto o no. Aquí os pongo la función:
Código PHP:
function crear_sesion()
{
    if(isset(
$_POST["user"]) && isset($_POST["pass"]))
    {
        if(
$_POST["user"]=="unusuario" && $_POST["pass"]=="unacontraseña")
        {
            
$_SESSION['Administracion']="admin";
            
sesion_admin();
        }else{
            
$msg='<div style="color:#FF0000;">Usuario o contraseña no válidos</div>\n';
        }
    }

Como veis, si el POST ha sido ejecutado y el usuario/pass son correctos llama a otra función. Esa función es la que redirige a la página restringida (http://misitio.es/admin) una vez evaluados los datos.
NOTA: Las sesiones session_start(); ya han sido iniciadas previamente.
Por otra parte la variable $msg contiene un mensaje en caso de que los datos introducidos sean erróneos, aquí podeis ver donde lo muestro:
Código HTML:
<div class="titulo">Acceso al área restringida</div>
<?php echo($msg); ?>
<form action="../login" method="post" name="f_login">
<fieldset id="login">
<legend>Introduzca sus datos de acceso</legend>
<table border="0">
<tr><td>Usuario: </td><td><input type="text" name="user" value=""></td></tr>
<tr><td>Contrase&ntilde;a: </td><td><input type="password" name="pass" value=""></td></tr>
<tr><td></td><td><input type="button" value="Entrar" onClick="javascript:comprobar_f('f_login')"></td></tr></table>
</fieldset>
</form> 
La variable $msg la he declarado anteriormente fuera de la función, para que no fuera local.

El problema es que no consigo que me reconozca el envío del formulario, es como si no viniera de la propia página o no enviara el formulario. Para eliminar más dudas pongo aquí la función de js que me comprueba y envía el formulario (comprobar_f('f_login'))
Código HTML:
if(document.f_login.user.value=="")
{
	alert("Introduzca el nombre de usuario");
	document.f_login.user.focus();
}else{
	if(document.f_login.pass.value=="")
	{
		alert("Debe introducir la contraseña");
		document.f_login.pass.focus();
	}else{
		document.f_login.submit();
	}
}
Seguro que al final es una tontería y me he pasado 15 minutos poniendo bonito el post

Se agradecen todo tipo de sugerencias!

Un saludo y gracias a todos por adelantado!
  #2 (permalink)  
Antiguo 27/01/2009, 04:56
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 10 meses
Puntos: 14
Respuesta: Problemas con $_POST

Cita:
Iniciado por Sancas Ver Mensaje
Hola a todos:

En primer lugar os cuento la mecánica de la página que me da error.
Es un formulario de login () el cual se envía a sí mismo la información y la procesa.
En caso de ser un login correcto redirige la página a la zona restringida ).
En caso de ser incorrecto se queda en la página del login y muestra el formulario de nuevo con un aviso:
Código HTML:
<div style="color:#FF0000;">Usuario o contraseña no válidos</div> 
En la página de login incluyo una página de funciones.
Una vez incluida, ejecuto una función que me evalua si se ha ejecutado el formulario, y en ese caso evalua si es correcto o no. Aquí os pongo la función:
Código PHP:
function crear_sesion()
{
    if(isset(
$_POST["user"]) && isset($_POST["pass"]))
    {
        if(
$_POST["user"]=="unusuario" && $_POST["pass"]=="unacontraseña")
        {
            
$_SESSION['Administracion']="admin";
            
sesion_admin();
        }else{
            
$msg='<div style="color:#FF0000;">Usuario o contraseña no válidos</div>\n';
        }
    }

Como veis, si el POST ha sido ejecutado y el usuario/pass son correctos llama a otra función. Esa función es la que redirige a la página restringida () una vez evaluados los datos.
NOTA: Las sesiones session_start(); ya han sido iniciadas previamente.
Por otra parte la variable $msg contiene un mensaje en caso de que los datos introducidos sean erróneos, aquí podeis ver donde lo muestro:
Código HTML:
<div class="titulo">Acceso al área restringida</div>
<?php echo($msg); ?>
<form action="../login" method="post" name="f_login">
<fieldset id="login">
<legend>Introduzca sus datos de acceso</legend>
<table border="0">
<tr><td>Usuario: </td><td><input type="text" name="user" value=""></td></tr>
<tr><td>Contrase&ntilde;a: </td><td><input type="password" name="pass" value=""></td></tr>
<tr><td></td><td><input type="button" value="Entrar" onClick="javascript:comprobar_f('f_login')"></td></tr></table>
</fieldset>
</form> 
La variable $msg la he declarado anteriormente fuera de la función, para que no fuera local.

El problema es que no consigo que me reconozca el envío del formulario, es como si no viniera de la propia página o no enviara el formulario. Para eliminar más dudas pongo aquí la función de js que me comprueba y envía el formulario (comprobar_f('f_login'))
Código HTML:
if(document.f_login.user.value=="")
{
	alert("Introduzca el nombre de usuario");
	document.f_login.user.focus();
}else{
	if(document.f_login.pass.value=="")
	{
		alert("Debe introducir la contraseña");
		document.f_login.pass.focus();
	}else{
		document.f_login.submit();
	}
}
Seguro que al final es una tontería y me he pasado 15 minutos poniendo bonito el post

Se agradecen todo tipo de sugerencias!

Un saludo y gracias a todos por adelantado!
puede agregar un campo oculto en tu form que se llame "envio" con valor uno ponele , y desde php lo procesas asi:
Código PHP:
if($_POST['envio']=="1"){
echo 
"proceso datos del form";
}else{
echo 
"usted no envio el form";

en el html deberias agregar
Código HTML:
<input type="hidden" name="envio" value="1"/> 
Saludos
  #3 (permalink)  
Antiguo 27/01/2009, 04:57
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años
Puntos: 48
Respuesta: Problemas con $_POST

Haz un print_r($_POST) para ver que valores recibes.
Cita:
La variable $msg la he declarado anteriormente fuera de la función, para que no fuera local.
para que sea considerada global dentro de la funcion tienes que declararla como global www.php.net/global

Por ultimo, yo cambiaria la validacion del onclick de un button al onsubmit del formulario, cambiando el boton a un submit. Tal como lo tienes, el formulario solo funciona con javascript activado. Colocandolo en el onsubmit, el formulario funcionaria sin javascript (por supuesto, no haria la validacion javascript).
  #4 (permalink)  
Antiguo 27/01/2009, 05:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con $_POST

Hola jonatanc, gracias por responder.
He probado tu método pero no me ha resuelto nada, gracias de todas formas ;)

Hola DarkJ, gracias por responder.
He hecho <?php print_r($_POST); ?> y todo el rato me devuelve "Array ( )" como texto. Voy a probar lo que dices del on submit para ver si es ahí donde da problemas.
Cómo sería el código que me dices para el onSubmit?

Gracias!
  #5 (permalink)  
Antiguo 27/01/2009, 05:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Problemas con $_POST

Perdón por el doble post.

He cambiado el js al onSubmit (aunque no me tira bien, me lo envía de todas todas, aunque tenga los campos vacíos, en cuyo caso saltan los alert, pero luego se envía)

Sigo sin poder recibir los POST...

Alguien tiene alguna idea?

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 14:42.