Foros del Web » Programando para Internet » PHP »

ahora ando con el tema de las sessions()

Estas en el tema de ahora ando con el tema de las sessions() en el foro de PHP en Foros del Web. mas o menos la cosa esta así: Código PHP: <? $url  =  explode ( "?" , $_SERVER [ 'HTTP_REFERER' ]); $pag_referida = $url [ 0 ...
  #1 (permalink)  
Antiguo 21/07/2004, 15:04
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 14 años, 3 meses
Puntos: 4
ahora ando con el tema de las sessions()


mas o menos la cosa esta así:
Código PHP:
<?

$url 
explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;

if (
$_SERVER['HTTP_REFERER'] == ""){
die (
"Error cod.:1 - Acceso incorrecto!");
exit;
}
if(isset(
$power_a)){
                    if (
$power_a 3){
                    
header("Location: user-login.php?error=1");
                                        }

}


session_start() ;
include(
"config.php");

        
        
$db mysql_connect($host$usuario,$password);  ///  conecto a la db
        
mysql_select_db($database,$db);   // selecion de bd
        
$sql "SELECT * FROM fw_admin where admin_pass = '$pass' and admin_user = '$user'"
        
$result mysql_query($sql,$db);
        
$myrow mysql_fetch_array($result);
        
$power_a$myrow[admin_poder];
        
        if (
$power_a == "3"){
        
mail("[email protected]","Ingreso Fallido","
    $user  esta intentando acceder al sistema perseo o esta atacando la Base de Datos<br>
    El password que intenta introducir es: $pass. "
,"FROM: [email][email protected][/email]");
        
header("Location: user-login.php?error=1");
                                        }
        
        if (
$myrow["admin_user"] <> ""){
            
session_start();
            
session_register('power_a');
            
session_register('pass');
            
session_register('user');
    } else {
    
mail("[email protected]","Ingreso Fallido","
    $user  esta intentando acceder al sistema perseo o esta atacando la Base de Datos<br>
    El password que intenta introducir es: $pass. "
,"FROM: [email][email protected][/email]");
    
    
header("Location: $redir?error=0");
    }
        

?>
alguien me puede decir por que no me deja ingresar por mas que mi usuario sea el correcto y la clave tambien??? y por que cornos no puedo matar las session?????

graxxx
__________________
[email protected] <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #2 (permalink)  
Antiguo 21/07/2004, 15:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Vamos por partes:

1) despues de esos header("location ..") usa un exit;

2) NOOOOOOOOOOOOO uses session_register() para trabajar con sesiones .. usa los arrays superglobales $_SESSION (si usas PHP 4.1.0 en adelante ..)

3) usa comillas en las llamadas a indices de tus arrays que sean alfanuméricos:
$power_a= $myrow['admin_poder'];

4) .. No tiene sentido registrar en una sesión: session_register('pass'); (tu contraseña) cuando tan sólo tieens que validar la existencia de tu "user" minimo o cualquier otra variable que guardes en tu sesión .. NO se trata de comprobar otra vez contra tu BD (consulta) los mismos datos que van en la sesión.. no es esa la filosofía de uso de las sesiones.

5) .. Tienes dos if() y un sólo else .. No cierras el

if ($myrow["admin_user"] <> ""){
session_start();
session_register('power_a');
session_register('pass');
session_register('user');
}

Pero .. tampoco haces nada si se cumple esa condición .. Se supone que ahí tendrías que redireccionar hacia la página que puedes entrar una vez validado tu usuario/contraseña y nivel de acceso .. (a no ser que el código lo pongas a continuación ..). Para que las variable de sesión queden disponibles .. debes "redireccionar" a otra página o recargar la misma. Por ende .. lo más sano ahí es que redirecciones a la página que puede entrar tu usuario validado y sin olvidarte de verificar la existencia de esas variables de sesión .. por qué eso será lo que indique que está entrando tu usuario por la "puerta" (pasó por tu login) y no por "detras" (acceso directo por el URL a esa tal página)....

Un saludo,
  #3 (permalink)  
Antiguo 21/07/2004, 15:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
6) (se me olvidó )

Sobra el session_start() del principio del script .. ya usas uno antes de usar tus session_register() (acuerdate de NO OOOOO usar ese método).

Un saludo,
  #4 (permalink)  
Antiguo 21/07/2004, 15:47
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 14 años, 3 meses
Puntos: 4
ahora no entiendo pòr que no usar ese método?=

cual es la onda? por que no?

disculpa mi ignorancia,
__________________
[email protected] <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #5 (permalink)  
Antiguo 21/07/2004, 15:53
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 14 años, 3 meses
Puntos: 4
te cuento que de repente anda que es un caño, no andaba porque habia modificado el password y por eso me rebotaba, pero igual me seria muy util saber por que no registrar $user y $pass y $power_a que digamos es un flag ni mas ni menos que amplia las capacidades del formulario que le sigue.

algunas cosas las veras conocidas, como "
die ("Error cod.:1 - Acceso incorrecto!");
que te lo robe del autentificator...


gracias
__________________
[email protected] <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #6 (permalink)  
Antiguo 21/07/2004, 16:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si usastes mi "Autentificator" ..por qué no ves el código de la versión 2.x? (usa los arrays superglobales).

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

Por lo demás .. el tema de usar o no "session_register()" .. más bien el acceso "global" al variables lo tienes brevemente explicado en esta FAQ:

http://www.forosdelweb.com/showthrea...989#post238989
Y en
www.php.net/session

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 18:53.