Foros del Web » Programando para Internet » PHP »

variables super globales

Estas en el tema de variables super globales en el foro de PHP en Foros del Web. [/PHP] <?php session_register('idUBA'); session_register('idUsuarioRegistrado'); // id usuarioRegistrado session_register('seudonimo'); session_register('contraseña'); // contraseña de usuarioRegistrado session_register('idPersona'); // id persona del usuario registrado session_register('contactos'); // sus contactos y ...
  #1 (permalink)  
Antiguo 24/05/2005, 23:35
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
variables super globales

[/PHP]
<?php
session_register('idUBA');
session_register('idUsuarioRegistrado'); // id usuarioRegistrado
session_register('seudonimo');
session_register('contraseña'); // contraseña de usuarioRegistrado
session_register('idPersona'); // id persona del usuario registrado
session_register('contactos'); // sus contactos y el estado de conexión en una matriz
session_register('i'); // número de elementos vertical de la matriz
session_register('n'); //
session_register('nroMensajesNuevos');
session_register('desde');
class GestorIniciarSesion
{
var $contactos;
var $i=0;
var $idPer;
var $idUsuarioR;
var $nroMensajesNuevos=0;
// funcion que verificara si usuario existe....
function verificarUsuario($link,$edSeudonimo,$edContraseña)
{
if ((isset($edSeudonimo))and (isset($edContraseña)))
{
// verificamos si existe en base de datos el usuario y su contraseña
$sql="select * from persona p, usuarioRegistrado u where (p.idPersona=u.idPersona) and (p.pseudonimo='$edSeudonimo') and (p.contraseña='$edContraseña')";
$respuesta=mysql_query($sql,$link);
if ($fila=mysql_fetch_array($respuesta))
{

$idPer=$fila['idPersona']; // saca el idPersona del seudonimo aceptado
$this->idPer=$idPer;
$idUsuarioRegistrado=$fila['idUsuarioRegistrado'];// saca el idUsuario registrado aceptado
$this->idUsuarioR=$idUsuarioRegistrado;
// seleccionamos todos los contactos de idPersona e idusuarioRegistrado aceptado...resultado en idContacto
$sql2="select * from contacto where (idPersona='$idPer') and (idUsuarioRegistrado='$idUsuarioRegistrado')";
$respuesta2=mysql_query($sql2,$link);
while ($fila2=mysql_fetch_array($respuesta2))
{
// tenniendo el idContacto de cada uno sacaremos sus seudonimos
$idDes=$fila2['usuarioContactado'];
$sql3="select * from persona p, usuarioRegistrado u where (p.idPersona=u.idPersona) and (u.idUsuarioRegistrado='$idDes') order by pseudonimo";
$respuesta3=mysql_query($sql3,$link);
$fila3=mysql_fetch_array($respuesta3);
$seuDes=$fila3['pseudonimo']; //sacamos el seudonimo de cada contacto
$estado=$fila3['estadoConexion'];
//agregamos a la matris contactos el seudonimo de cada uno con su respectivo estado

$this->contactos[$this->i][0]=$seuDes;
$this->contactos[$this->i][1]=$estado;
$this->i++;
}
// saca el número de mensajes nuevos para este usuario
$sql4="select * from mensajePrivado where (usuarioDestino='$idUsuarioRegistrado')";
$res4=mysql_query($sql4,$link) or die("error en <b>$slq5</b> :::".mysql_error());
while($fila4=mysql_fetch_array($res4))
$this->nroMensajesNuevos++;
// fin sacar número de mensajes nuevos
mysql_free_result($res4);
mysql_free_result($respuesta2);
mysql_free_result($respuesta); // con duda....

return true;
}
else
return false;
}
else //($edSeudonimo=="")or ($edContraseña==""
return false;
}
function sacarIDUBA($link)
{
//$idUBA="";

$sql="select * from usuarioBuscaAmistad where (idPersona='$this->idPer')";
$res=mysql_query($sql,$link)or die(mysql_error($link));
if($fila=mysql_fetch_array($res))
{
$idUBA=$fila['idUsuarioBuscaAmistad'];
echo "entra aqui y sale $idUBA<br>";
}

return $idUBA;
}
}//fin clase
// ________________________________
include ("../conect.php"); //l
$link=conectarse(); //l
// _____________________________//l
$aux=$_SESSION['seudonimo'];$aux2=$_SESSION['n'];
$desde="gis"; //sirver para ver desde done se va escribir un nuevo mensaje para que sirva para el tretonro
if ($aux<>""){
if ($aux2==1){// quiere decir que ya entro por lo menos una vez y ya no tiene que actualizarse
include("../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
elseif(!isset($aux2)){
$n=$n+1;
include("../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
else
{
$contra2=$_SESSION['contraseña'];
$new=new gestorIniciarSesion;
$new->verificarUsuario($link,$aux,$contra2);
$contactos=$new->contactos;
$i=$new->i;
$nroMensajesNuevos=$new->nroMensajesNuevos;
include("../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
}
else // No existe una sesión aún
{
$new=new gestorIniciarSesion;
if($new->verificarUsuario($link,$edSeudonimo,$edContraseña )){
// COMO ES LA PRIMERA VEZ QUE ENTRAMOS VAMOS A VER SI ES USUARIO REGISTRADO
$idUBA=$new->sacarIDUBA($link);
echo "es....$idUBA<br>";
//================================================== ========================
$seudonimo=$edSeudonimo;
$contraseña=$edContraseña;
$idUsuarioRegistrado=$new->idUsuarioR;
$idPersona=$new->idPer;
$contactos=$new->contactos;
$i=$new->i;
$nroMensajesNuevos=$new->nroMensajesNuevos;
include("../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
else
{
include("../IniciarSesion/IUIniciarSesion.php");
$a=new IUIniciarSesion;
$a->verIU();
}
}

?>
[/PHP]

Como podrán observar tengo un monton de variables de session, me han estado funcionando pero me sugerieron usar variables superglobales,ya que las var de sessiones son obsoletas como dice en:
http://www.forosdelweb.com/f18/variable-sesion-si-no-existe-297967/ ,
pero luego voy al enlace que sugiere:
http://www.forosdelweb.com/f18/faqs-php-530600-post238989/ , ahi habla de una manera creo que no muy clara, al menos no la entiendo, si alguien por favor con un ejemplo simple podriía mostrarme como puedo cambiar de variables de sesiones a variables super globales, en todo caso un ejemplo sencillo de como usarlas como por ejemplo en el envio de formularios y que dado una variables se conserve el valor en toda la visita a la web. muchisimas gracias.
  #2 (permalink)  
Antiguo 24/05/2005, 23:36
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
sorry

simpre olvido quitar / :)
Código PHP:
<?php
session_register
('idUBA');
session_register('idUsuarioRegistrado'); // id usuarioRegistrado
session_register('seudonimo');
session_register('contraseña'); // contraseña de usuarioRegistrado
session_register('idPersona'); // id persona del usuario registrado
session_register('contactos'); // sus contactos y el estado de conexión en una matriz
session_register('i'); // número de elementos vertical de la matriz
session_register('n'); //
session_register('nroMensajesNuevos');
session_register('desde');
class 
GestorIniciarSesion
{
var 
$contactos;
var 
$i=0;
var 
$idPer;
var 
$idUsuarioR;
var 
$nroMensajesNuevos=0;
// funcion que verificara si usuario existe....
function verificarUsuario($link,$edSeudonimo,$edContraseña
{
if ((isset(
$edSeudonimo))and (isset($edContraseña)))
{
// verificamos si existe en base de datos el usuario y su contraseña
$sql="select * from persona p, usuarioRegistrado u where (p.idPersona=u.idPersona) and (p.pseudonimo='$edSeudonimo') and (p.contraseña='$edContraseña')";
$respuesta=mysql_query($sql,$link);
if (
$fila=mysql_fetch_array($respuesta))
{

$idPer=$fila['idPersona']; // saca el idPersona del seudonimo aceptado
$this->idPer=$idPer;
$idUsuarioRegistrado=$fila['idUsuarioRegistrado'];// saca el idUsuario registrado aceptado
$this->idUsuarioR=$idUsuarioRegistrado;
// seleccionamos todos los contactos de idPersona e idusuarioRegistrado aceptado...resultado en idContacto
$sql2="select * from contacto where (idPersona='$idPer') and (idUsuarioRegistrado='$idUsuarioRegistrado')";
$respuesta2=mysql_query($sql2,$link);
while (
$fila2=mysql_fetch_array($respuesta2))
{
// tenniendo el idContacto de cada uno sacaremos sus seudonimos
$idDes=$fila2['usuarioContactado'];
$sql3="select * from persona p, usuarioRegistrado u where (p.idPersona=u.idPersona) and (u.idUsuarioRegistrado='$idDes') order by pseudonimo";
$respuesta3=mysql_query($sql3,$link);
$fila3=mysql_fetch_array($respuesta3);
$seuDes=$fila3['pseudonimo']; //sacamos el seudonimo de cada contacto
$estado=$fila3['estadoConexion'];
//agregamos a la matris contactos el seudonimo de cada uno con su respectivo estado

$this->contactos[$this->i][0]=$seuDes;
$this->contactos[$this->i][1]=$estado;
$this->i++; 
}
// saca el número de mensajes nuevos para este usuario
$sql4="select * from mensajePrivado where (usuarioDestino='$idUsuarioRegistrado')";
$res4=mysql_query($sql4,$link) or die("error en <b>$slq5</b> :::".mysql_error());
while(
$fila4=mysql_fetch_array($res4))
$this->nroMensajesNuevos++; 
// fin sacar número de mensajes nuevos
mysql_free_result($res4);
mysql_free_result($respuesta2);
mysql_free_result($respuesta); // con duda....

return true;
}
else
return 
false;
}
else 
//($edSeudonimo=="")or ($edContraseña==""
return false;
}
function 
sacarIDUBA($link)
{
//$idUBA="";

$sql="select * from usuarioBuscaAmistad where (idPersona='$this->idPer')";
$res=mysql_query($sql,$link)or die(mysql_error($link));
if(
$fila=mysql_fetch_array($res))
{
$idUBA=$fila['idUsuarioBuscaAmistad'];
echo 
"entra aqui y sale $idUBA<br>";
}

return 
$idUBA;
}
}
//fin clase
// ________________________________
include ("../conect.php"); //l
$link=conectarse(); //l
// _____________________________//l
$aux=$_SESSION['seudonimo'];$aux2=$_SESSION['n'];
$desde="gis"//sirver para ver desde done se va escribir un nuevo mensaje para que sirva para el tretonro
if ($aux<>""){
if (
$aux2==1){// quiere decir que ya entro por lo menos una vez y ya no tiene que actualizarse
include("../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
elseif(!isset(
$aux2)){
$n=$n+1;
include(
"../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
else
{
$contra2=$_SESSION['contraseña'];
$new=new gestorIniciarSesion;
$new->verificarUsuario($link,$aux,$contra2); 
$contactos=$new->contactos;
$i=$new->i;
$nroMensajesNuevos=$new->nroMensajesNuevos;
include(
"../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
}
else 
// No existe una sesión aún
{
$new=new gestorIniciarSesion;
if(
$new->verificarUsuario($link,$edSeudonimo,$edContraseña) ){ 
// COMO ES LA PRIMERA VEZ QUE ENTRAMOS VAMOS A VER SI ES USUARIO REGISTRADO
$idUBA=$new->sacarIDUBA($link);
echo 
"es....$idUBA<br>";
//================================================== ========================
$seudonimo=$edSeudonimo;
$contraseña=$edContraseña;
$idUsuarioRegistrado=$new->idUsuarioR;
$idPersona=$new->idPer;
$contactos=$new->contactos;
$i=$new->i;
$nroMensajesNuevos=$new->nroMensajesNuevos;
include(
"../Interfaces/IUUsuarioRegistrado.php");
$a=new IUUsuarioRegistrado;
$a->verIU();
}
else
{
include(
"../IniciarSesion/IUIniciarSesion.php");
$a=new IUIniciarSesion;
$a->verIU();
}
}

?>
  #3 (permalink)  
Antiguo 25/05/2005, 04:20
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Supongo que a lo que se refirieron es que en vez de hacer el session_register('contactos') por ejemplo, para obtener la variable de sesión contactos y usarla como $contactos en adelante, uses el array superglobal $_SESSION.
Con él, no tienes que hacer nada como session_register(..) o similares, simplemente úsalo como un array de variables. Para acceder a la anterior puedes hacer $_SESSION['contactos'] en cualquier parte, y funcionará. Para eliminar la variable simplemente unset($_SESSION['contactos']).
Creo que te referías a eso.
__________________
Mi página personal: Julián Urbano
  #4 (permalink)  
Antiguo 25/05/2005, 14:18
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
cual es la ventaja o diferencia al usar $_SESSION. en vez de las sessiones? basicamente no son lo mismo? en los link que dan para leer dicen algo del off u on a que se refieren con esto?
  #5 (permalink)  
Antiguo 25/05/2005, 15:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Jorgemen
cual es la ventaja o diferencia al usar $_SESSION. en vez de las sessiones? basicamente no son lo mismo? en los link que dan para leer dicen algo del off u on a que se refieren con esto?
Puedes revisar la documentación oficial al respecto:

www.php.net/session

también las FAQ's de este foro:
http://www.forosdelweb.com/showpost....&postcount=129

El ejemplo simple de uso de sesiones usando los arrays superglobales es lo que tienes en la FAQ:

http://www.forosdelweb.com/f18/faqs-php-530600-post238998/

Hazte la idea que los "arrays" superglobales son eso mismo .. arrays (matrices, arreglos, vectores .. o como quieras llamarlos).

Un saludo,
  #6 (permalink)  
Antiguo 25/05/2005, 15:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Jorgemen
cual es la ventaja o diferencia al usar $_SESSION. en vez de las sessiones? basicamente no son lo mismo? en los link que dan para leer dicen algo del off u on a que se refieren con esto?
No, no son lo mismo .. El "ambito" de las variables es diferente. Lease "ambito": donde puede tomar el valor de tus variables. (en la FAQ que mencionas se comenta).

Por ejemplo . . si tienes una "función" cualquiera .. con $_SESSION puedes acceder a un valor de una variable de tu sesión dentro de tu función sin tener que declararla como "Global" o como parámetro.

Tampoco en cuanto a sesiones puedes mezclar .. declarar una variable por session_Register() y luego obtenerla por $_SESSION .. de hecho te funciona así por qué usaras (php.ini) la directiva: register_globals a ON .. de esa forma no se discrimina de donde llega tu variable .. y eso es MUYYYYY importante cara a seguridad (ejemplo tienes en la FAQ que mencionas) ..

Si hay algo que no te ha quedado claro .. intenta concretar.

Un saludo,
  #7 (permalink)  
Antiguo 25/05/2005, 17:02
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
Ya cumita, lo eh leido, y creo haber entendido, corrigeme si me equivoco, mas que todo es por seguridad por que algun pendejo podría enviar mediante una URL (hipervinculo) sabiendo que uso la variable de session registrada 'seudonimo' con cualquier valor (miPrograma.php?seudonimo=lo_q_sea), y mi programa que usa session_register, podría aceptar cualquier metodo hasta el GET que es para recuperar variables de URL, entonces se mi variable de session 'seudonimo'=lo_q_sea y como yo en mi programa por ejemplo pregunto:
Código PHP:
$aux=$_SESSION['seudonimo'];
   if (
$aux<>""){ 
   include(
"../Interfaces/IUUsuarioRegistrado.php"); 
solo si session no esta vacia, y como tiene contenido lo_q_sea entonces entrará al if mostrando algo que no debería, joer tonces si digo la dirección de mi página con los datos que eh escrito podrían acceder y bulnerar la prácticamente nula seguridad jeje, bueno ojala haya entendido bien. gracias cluster y felicidades por tu 10000 mensajes jejje.
  #8 (permalink)  
Antiguo 25/05/2005, 17:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Cita:
Iniciado por Jorgemen
(...)mas que todo es por seguridad(...)
Es verdad, pero eso también nos termina llevando a un tema de compatibilidad. Si no utilizas superglobales, tu script sólo funcionará bajo la directiva register_globals en ON. En cambio si los utilizas, funcionarán bajo esa directiva en ON u OFF.

Además, con la práctica, te vas dando cuenta que utilizando superglobales tu código es mucho más sencillo y fácil de seguir y entender.
Cita:
Iniciado por Jorgemen
gracias cluster y felicidades por tu 10000 mensajes jejje.
mmm... creo que traes como un año de retraso... ya va bordeando los 25000.

Saludos
  #9 (permalink)  
Antiguo 25/05/2005, 18:23
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 18 años, 11 meses
Puntos: 1
felicidades por tu 10000+15000 ya ta solucionado..jeje gracias cumita por el dato de On y Off, creo que el tema está cerrado
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 23:43.