Foros del Web » Programando para Internet » PHP »

Sesiones y Funciones - PROBLEMASO!

Estas en el tema de Sesiones y Funciones - PROBLEMASO! en el foro de PHP en Foros del Web. Buenas gente, creo que se pueden declarar sessions en una funcion hecha por mi... bueno, el tema es que no me anda... aca les mando ...
  #1 (permalink)  
Antiguo 13/09/2003, 07:25
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
Mensaje Sesiones y Funciones - PROBLEMASO!

Buenas gente, creo que se pueden declarar sessions en una funcion hecha por mi... bueno, el tema es que no me anda... aca les mando un idea de como quiero que funcione la cosa, pero a mi el error.php (ver adelante) no me muestra nada, o sea... redirecciona y todo, pero no muestra:

las dos funciones (la de definir una sesion de error, y la de redireccionar):
(partes del functions.php):
Código PHP:
// El del msg de error
function reg_error($tipo=""){
    
session_register("error_msg");
    switch(
$tipo){
        case 
"falta_dato":
                
$error_msg="Por favor, vuelva atras y complete los daots que llevan un asterisco";
            break;
        case 
"dato_usado":
                
$error_msg="Uno de los datos que usted ingreso, es usado por otro usuario, por favor, comuniquese con el WebMaster si se olvido su clave";
            break;
        case 
"pass_error":
                
$error_msg="Las dos Passwords que ingreso, no son iguales, por favor, vuelva atras y ingrese dos passwords validas";
            break;
        case 
"pass_error_lenght":
                
$error_msg="Su Password debe tener ".$minimum_pass_lenght." o mas caracteres.";
            break;
        }
    return 
$error_msg;
}

// La de Redireccionar en JavaScrip (por ahi se le puede hacer algo para que ande, que se yo)

function redirectjs($url ""$time 0)
{
    if (
$url == "")
        
$url $PHP_SELF;
    echo 
"<script>\n";
    if (
$time == 0)
        echo 
"  window.location = \"$url\"\n";
    else
        echo 
"  setTimeout(\"window.location = \'$url\'\",$time)\n";
    echo 
"</script>\n";

Este es el archivo que incluye a functions.php

Código PHP:
    $recf=array(
        
'nick'=>$nick,
        
'name'=>$name,
        
'sname'=>$sname,
        
'born_day'=>$born_day,
        
'born_month'=>$born_month,
        
'born_year'=>$born_year,
        
'place'=>$place,
        
'mail'=>$mail,
        
'icq'=>$icq,
        
'msn'=>$msn,
        
'irc'=>$irc,
        
'web'=>$web,
        
'pass'=>$passsend,
        
'pass2'=>$passsend2,
        
'picklink'=>$piclink
        
);    
    
// Comprobamos las variables infaltables, Nick, Nombre, Apellido,
    // F. de nacimiento, localidad, e-mail
    
if(!isset($nick) & !isset($name) & !isset($sname) & !isset($mail) & !isset($pass)){
        
reg_error("falta_dato"); // en functions.php
        
redirectjs("error.php",0);
        }
    
// Chekeamos si hay un usuario con el mismo Nick, Mail, ICQ, msn, o nombre*apellido
    
$query="SELECT id FROM users WHERE nick='$recf[nick]' OR mail='$recf[mail]' OR name='$recf[name]' AND sname='$recf[sname]'";
    
$result=mysql_query($query,$mysql_con_id);//Volcamos el query en $result
    //Ahora cheakeamos si ya existe alguien con uno de los datos clave
    
if(mysql_num_rows($result)!=0){
        
reg_error("dato_usado");
        
redirectjs("error.php",0);
        }
    
// Si la password es menor de 7 caracteres
    /*Start*/
    
$passlenght=strlen($recf['pass']);
    if(
$passlenght<$minimum_pass_lenght){
        
reg_error("pass_error_lenght");
        
redirectjs("error.php",0);
        }
    
/*Fin*/
    // Chekeamos las contraseNas
    
if($recf['pass']!=$recf['pass2']){
        
reg_error("pass_error");
        
redirectjs("error.php",0);
        }
    
// Redireccionamos si hubo errores:
    
if(session_is_registered('error_msg')){
        echo 
"ESTO YA NO ANDA";
        } 
esa es una parte del archivo, y tiene una linea al princiio del mismo, que es el famoso session_start()..

Alguien me podria dar una po favor, que esto ya me embolo demasiado ?
Gracias anticipadamente.
  #2 (permalink)  
Antiguo 13/09/2003, 16:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Lee con detenimiento www.php.net/session_register . Ahi pone que esta funcion solo sirve para meter en la sesion variables GLOBALES. Es decir, variables que se definen en el nivel superior del script. Es decir, las variables que se definen fuera de las funciones. Y tu estas intentando registrar una variable definida dentro de una funcion. Es decir, una variable NO GLOBAL. Solucion: pasate a $_SESSION. Aunque eso te obligara a cambiar todo tu script, pero asegurara que funcionara en versiones futuras.

Solucion "de parcheo": define la variable que registras como globla dentro de la funcion. Asi:
Código PHP:

function reg_error($tipo=""){

    global 
$error_msg;

    
session_register("error_msg"); 
Mas info www.php.net/variables.scope .

Y por cierto, no se si primero tienes que asignar el valor a la variable y luego hacer el session_register().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 13/09/2003, 23:34
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
Si, Josemi, recien antes de entrar aca, encontre la solucion, tal cual la dijiste, y pase todo a $_SESSION y anda joya :D ...

mchas gracias maestro por ayudar!
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 12:30.