Foros del Web » Programando para Internet » PHP »

Redireccion a pagina por formulario

Estas en el tema de Redireccion a pagina por formulario en el foro de PHP en Foros del Web. Tengo un problema con un archivo llamado login.php que no realiza la accion deseada. Me explico: Al darle al boton del formulario de login quiero ...
  #1 (permalink)  
Antiguo 06/03/2006, 04:42
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Redireccion a pagina por formulario

Tengo un problema con un archivo llamado login.php que no realiza la accion deseada.
Me explico:
Al darle al boton del formulario de login quiero que me cargue la pagina que yo le indique, que en este caso es el index.php.Ademas de la funcion de logeado que ya realiza pero sin salir del archivo en cuestion.
Si alguien sabe la forma agradeceria alguna ayuda.
  #2 (permalink)  
Antiguo 06/03/2006, 04:51
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 12 años, 4 meses
Puntos: 5
De acuerdo form

Estas usando le METODO GET / POST ??

si posteas parte de tu codigo podemos apoyarte mejor

Salu2
__________________
. .: El mejor Inicio :. .
  #3 (permalink)  
Antiguo 06/03/2006, 05:03
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
Este es el formulario:
<form action="login.php" method="POST" name="frmLogin">
<input type="hidden" name="loginCorrecto" value="1">
<table border="1" bordercolor"#000000" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2">Acceso a Plataforma Academia Ceta</td>
</tr>
<tr>
<td>Nick:</td>
<td align="right"><input type="text" name="nickL" value="<?=$nickL?>"></td>
</tr>
<tr>
<td>Password:</td>
<td align="right"><input type="password" name="passL" value="<?=$passL?>"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="cmdEnviar" value="Enviar"></td>
</tr>
</table>
</form>

Y el login.php

$nickL=$_REQUEST["nickL"];
$passL=$_REQUEST["passL"];
$loginCorrecto=$_REQUEST["loginCorrecto"];

if($loginCorrecto)
{
$conexion = mysql_connect("$dbhost", "$dbuser", "$dbpass");

mysql_select_db($db);
//Realiza la consulta
$sql="select * from usuarios where nick='$nickL' AND pass='$passL'";
//ejecuto los comandos mysql con mysql_query, ejecuta $sql y lo guarda en la variable $res

$res = mysql_query($sql);

if(mysql_num_rows($res)>0)
{
$fila=mysql_fetch_row($res);
$usuarioLogeado['id']=$fila[0];
$usuarioLogeado['nick']=$fila[1];
$usuarioLogeado['nombre']=$fila[3];
$usuarioLogeado['tipo_usuario']=$fila[12];
$_SESSION['usuarioLogeado']=$usuarioLogeado;
print 'Bienvenido '.$usuarioLogeado["nombre"];
}
else
{
session_unregister('usuarioLogeado');
echo "Usuario no existente en la base de datos o Password incorrecto";
}
}
else
{
include('plantillas/formlogin.php');
}

Lo que quiero es que se redirija a el index.php al darle a submit.
  #4 (permalink)  
Antiguo 06/03/2006, 08:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
<input type="hidden" name="loginCorrecto" value="1">

NUNCA! hagas cosas como esa .. Imagina que yo te uso ese formulario desde mis servidores (o navegador en sí sólo) y suplanto el valor de esa variable o la replico ..

Ya usas variables de sesión .. usalas para TODO!...

También se observan algunos problemas en el uso de las variables de sesión:
session_unregister('usuarioLogeado');

Eso NO debes usarlo .. si usas $_SESSION (www.php.net/session) ..

Tampoco se vé que uses session_start() (falta todo el código en su contexto!).

La validación que haces no es correcta:
if($loginCorrecto)

deberías basarlo en la existencia de tu variable de sesión que -defines- cuando pasa la autentificación contra tu BBDD por médio de esa consulta SQL que comparas tu usuario/contraseña que exista.

Podría ser:
Código PHP:
<?
session_start
(); // acuerdate de usarlo!!!!
if (isset($_SESSION['usuarioLogeado'))){
// pasó tu validación contra tu BBDD
} else {
// autentificas a tu usuario por tus variables del formulario ...
}
Más o menos esta filosofía la puedes ver completa y funcionando en este script:

Autentificator
http://php.cluster-web.com/autentificator

Un saludo,
  #5 (permalink)  
Antiguo 09/03/2006, 04:03
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
Ayuda plisss es importante

Necesito recargar una pagina al darle a un boton de un formulario y al darle a logout tb alguien sabe como hacerlo?

Un Saludo Gracias
  #6 (permalink)  
Antiguo 09/03/2006, 05:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si hablas de "botones" y acciones que suceden en el "cliente" el problema debes resolverlo con javascript ..

Por ejemplo ante un evento "onClick" en tu botón .. llamas a javascript para hacer un window.reload(). Pero esto como ya te he comentado es "javascript" no PHP .. a no ser que tu "botón" llame a un script PHP y este al terminar su proceso haga una redirección (como el tema que planteas para tu "logout")

El tema del "al darle al logout" .. supongo que te referiras que al dar a ese botón/link vas a llamar a tu script PHP de procedso que mata la sesión .. y posteriormente debes recargar tal página (si misma u otra) ..

En ese caso:

logout.php
Código PHP:
<?
// destruye la sesión
header("Location: dondetengasqueir.php");
exit;
?>
Un saludo,
  #7 (permalink)  
Antiguo 09/03/2006, 05:48
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
Aclaracion con mi codigo.

Mi logout ya echo:


Código PHP:
//Parte de arriba de la página
header("Location:index.php");
include(
"arriba.php");

session_destroy();

echo 
"Ya no te encuentras logueado";
//aqui es donde quiero que recargue la pagina.
 
include("abajo.php"); 
Con eso ya funciona donde deberia ponerlo en el siguente caso??

Caso del Login:

Plantilla llamada formlogin.php:

<form action="login.php" method="POST" name="frmLogin">
<input type="hidden" name="loginCorrecto" value="1">
<table border="1" bordercolor"#000000" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2">Acceso a Plataforma Academia Ceta</td>
</tr>
<tr>
<td>Nick:</td>
<td align="right"><input type="text" name="nickL" value="<?=$nickL?>"></td>
</tr>
<tr>
<td>Password:</td>
<td align="right"><input type="password" name="passL" value="<?=$passL?>"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="cmdEnviar" value="Enviar"></td>
</tr>
</table>
</form>

y este seria el login:



Código PHP:
include("arriba.php");

$nickL=$_REQUEST["nickL"];
$passL=$_REQUEST["passL"];
$loginCorrecto=$_REQUEST["loginCorrecto"];

if(
$loginCorrecto)
{
    
$conexion mysql_connect("$dbhost""$dbuser""$dbpass");
        
        
mysql_select_db($db);
    
//Realiza la consulta
        
$sql="select * from usuarios where nick='$nickL' AND pass='$passL'";
    
//ejecuto los comandos mysql con mysql_query, ejecuta $sql y lo guarda en la variable $res
         
         
$res mysql_query($sql);

    if(
mysql_num_rows($res)>0)
    {
        
$fila=mysql_fetch_row($res);
        
$usuarioLogeado['id']=$fila[0];
        
$usuarioLogeado['nick']=$fila[1];
        
$usuarioLogeado['nombre']=$fila[3];
        
$usuarioLogeado['tipo_usuario']=$fila[12];
        
$_SESSION['usuarioLogeado']=$usuarioLogeado;
        print 
'Bienvenido '.$usuarioLogeado["nombre"];
    }
    else
    {
        
session_unregister('usuarioLogeado');
        echo 
"Usuario no existente en la base de datos o Password incorrecto";
    }
}
else
{
    include(
'plantillas/formlogin.php');
}

include(
"abajo.php"); 

Última edición por grimorth; 09/03/2006 a las 05:57
  #8 (permalink)  
Antiguo 10/03/2006, 03:54
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
sin saber colocarlo

El tema del logout lo tengo solucionado pero el de el login no se donde incluirlo me da error casi siempre.
AYUDA PLISSS
  #9 (permalink)  
Antiguo 10/03/2006, 05:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por grimorth
El tema del logout lo tengo solucionado pero el de el login no se donde incluirlo me da error casi siempre.
AYUDA PLISSS
Si dices que te dá "error" debes concretar que "error" te dá; de que tipo .. en fin .. más detalles.

Por cierto .. este código:
Código PHP:
<?
//Parte de arriba de la página 
header("Location:index.php"); 
include(
"arriba.php"); 

session_destroy(); 

echo 
"Ya no te encuentras logueado"
//aqui es donde quiero que recargue la pagina. 
  
include("abajo.php");  
?>
no tiene sentido ..

NO tiene sentido hacer un "header()" para redireccionar (location) y luego más código PHP tipo "un include()" y cosas así.

Pon todo el código -completo- que uses en su contexto .. nombra los scripts que uses para identificarlos y explica como pasas de uno a otro (incluido esos "include()" que llame a otro código ..).

Un "logout.php" típico sólo tendría que tener:

Código PHP:
<?

// iniciar/destruir sesión

// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
   
setcookie(session_name(), ''time()-42000'/');
}

// Finally, destroy the session.
session_destroy();

// redireccionar.
header("Location: dondetengasqueir.php"); 
exit;  
// en realidad este exit en este punto sobraría ..  
?>
www.php.net/session_destroy

Los "mensajes" que quieras mostrar sobre que ya no estás en la sesión y demás hazlo en la página que redirecciones NO en ese script de proceso. Puedes usar variables de control que pases por el URL para controlar este tema:

header("Location: dondetengasqueir.php?mensaje=1");


Un saludo,
  #10 (permalink)  
Antiguo 21/03/2006, 04:17
 
Fecha de Ingreso: marzo-2006
Ubicación: En mi oscura y humeda madriguera
Mensajes: 27
Antigüedad: 11 años, 9 meses
Puntos: 0
Ya lo solucione con un simple ayuda de las faq´s de este foro.
La solucion era poder poner el header() donde yo quiera y ya lo consegui con este codigo que viene en el faq.

De todas maneras gracias por la ayuda y sobre todo por el agujero de seguridad que me encontraste Cluster.

Seguire usando las variables de sesion para todo lo posible gracias :D.

Un Saludo.
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 03:46.