Foros del Web » Programando para Internet » PHP »

Variables globales en php???

Estas en el tema de Variables globales en php??? en el foro de PHP en Foros del Web. Saludos, Estoy teniendo el siguiente problema, tengo un minisite con un login, a inicial secion lo que hago es almacenar los datos (Nombre, email, y ...
  #1 (permalink)  
Antiguo 08/12/2010, 08:19
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Variables globales en php???

Saludos,

Estoy teniendo el siguiente problema, tengo un minisite con un login, a inicial secion lo que hago es almacenar los datos (Nombre, email, y telefono en $_SESSION) que sucede en safari esto no me funciona correctamente cuando paso de una pagina a otra Ej: de index.php a datos.php ya la session no existe, mucho menos cuando intentedo recoger los datos mas adelante.

Pregunta mas concreta, una idea para crear una clase o una funcion que maneje estos datos globalmente

osea: quiero poder definir unas variables globales para utilizarla en el site entero, se que esto se puede con un global $nombre por ejemplo.

una recomendacion por favor,

Código PHP:
/*Si el formulario enviado fue el de usuarios normales osea publicos*/
if ($_POST['email'] and $_POST['nombre'] ) {
    
$_SESSION['logueado']= 0;
    
$_SESSION['user'] = "";
    
$_SESSION['nombre']= $_POST['nombre'];
    
$_SESSION['email']= $_POST['email'];
    
$_SESSION['telefono']= "(".$_POST['telefono1'].") " .$_POST['telefono2']."-".$_POST['telefono3'];
    
$telefono"(".$_POST['telefono1'].") " .$_POST['telefono2']."-".$_POST['telefono3'];
    
  
$insertSQL sprintf("INSERT INTO usuarios (email, nombre, telefono) VALUES (%s, %s, %s)",
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($telefono"text"));
  
mysql_select_db($database_conect$conect);
  
$Result1 mysql_query($insertSQL$conect) or die(mysql_error());
  
  }
elseif(
array_key_exists('nombre'$_POST)){
         
header("location: index.php?errorlogin=2");
     }
//if (empty($_GET['model'])){ header("location: index.php?errorlogin=2");}//esto es para redireccioanar cualquier usuario que intente entra directamente....

/*Si el formulario enviado fue el de login: */
if($_POST['user'] and $_POST['passwd']){
    
 
$user$_POST['user'];
 
$passwd$_POST['passwd'];
 
     
/*Consulto la base de datos haber si los datos con correctos*/
  
mysql_select_db($database_conect$conect);
  
$LoginRS_query="SELECT * FROM admin WHERE admin.user='$user' AND admin.passwd='$passwd'"
  
$LoginRS mysql_query($LoginRS_query$conect) or die(mysql_error());
  
$loginFoundUser mysql_num_rows($LoginRS);
 
 
  if (
$loginFoundUser) { 
  
  
/*Si los datos son correcto entonces procedo a sacar todo los registros pertenecientes a dicho usuario*/
   
while ($datos_usuariosmysql_fetch_assoc($LoginRS)){
      
$user_id$datos_usuarios['id'];
      
$user$datos_usuarios['user'];
      
$nombre$datos_usuarios['nombre'];
      
$email$datos_usuarios['email'];
      
$telefono$datos_usuarios['telefono'];
      }
     
/*Almaceno todos los datos del usuario en una variable de sesion*/      
    
$_SESSION['logueado']= 1;  
    
$_SESSION['user_id'] = $user_id;
    
$_SESSION['user'] = $user;
    
$_SESSION['nombre']= $nombre;
    
$_SESSION['email']= $email;
    
$_SESSION['telefono']= $telefono;
    
  } 
Este es el codigo aqui verifico si el usuario a introducido los da
  #2 (permalink)  
Antiguo 08/12/2010, 08:25
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 5 meses
Puntos: 13
Respuesta: Variables globales en php???

Código PHP:
session_start(); 
No veo que inicies la sessión.
Más info de la función en la documentación de PHP
http://php.net/manual/es/function.session-start.php

Segundo, lo de variables globales no lo tienes nada claro, esas son como cualquier variable solo que se pueden acceder desde cualquier función por mas que no la pases por parámetro, pero cuando termina la ejecución del script su contenido se pierde.

Las formas de hacer persistencia de las variables, usando session (se guarda en el server), cookies (se guarda en el cliente), archivos o bases de datos.
  #3 (permalink)  
Antiguo 08/12/2010, 08:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Variables globales en php???

Comprendo! muchas gracias por la aclaracion, la sesion la inicio en un archivo que pongo por medio del un include que es el head.php

Código PHP:
Ver original
  1. //initialize the session
  2. if (!isset($_SESSION)) {
  3. }

como podria hacer esto con cookies? es mas recomendable? porque con las sesiones no me funciona bien en safari y el site esta oriengo para un IPAD :S
  #4 (permalink)  
Antiguo 08/12/2010, 08:49
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 5 meses
Puntos: 13
Respuesta: Variables globales en php???

Prueba haciendo lo siguiente y nos cuentas

Código PHP:
//initialize the session
session_start(); 

También prueba imprimiendo el ID de la sessión para comprobar si el problema es que inicias varias sessiones

Código PHP:
echo session_id (); 
Si ese valor cambia vas a tener que forzar el id mediante get, aunque no es recomendable no se me ocurre otra solución.
  #5 (permalink)  
Antiguo 08/12/2010, 09:01
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Variables globales en php???

Voy hacer las pruebas ahora mismo :) gracias!
  #6 (permalink)  
Antiguo 08/12/2010, 09:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Variables globales en php???

cuando imprimo el id de la secion me tira este error

023e5553087da041ee3c9f1439bc6c16
Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in /home/viamar/public_html/print-cotizacion.php on line 5
  #7 (permalink)  
Antiguo 08/12/2010, 09:20
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 5 meses
Puntos: 13
Respuesta: Variables globales en php???

Eso es debido a que ya enviaste una salida y no puedes mandar las cabeceras porque ya fueron enviadas, prueba agregando en la 1ra linea:
Código PHP:
ob_start(); 
Igual aclaro que yo pensaba que no cambiabas la sessión, lo que te dije yo para probar era si no regenerabas la sessión, proba sin usar el session_regenerate_id
  #8 (permalink)  
Antiguo 08/12/2010, 09:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Variables globales en php???

Bueno, creo que acabo de solucionarlo :) lo que hice fue guardar la secion cada ves que se termine de hacer la cotización, osea es un script para un solo producto con varios parámetros color modelo etc.

en el index.php lo que hago se guardar la sesion activa session_write_close(); y luego inicial la siguiente :)
  #9 (permalink)  
Antiguo 08/12/2010, 09:54
 
Fecha de Ingreso: agosto-2009
Mensajes: 78
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Variables globales en php???

otra pregunta, para recoger todos los valores de post puedo hacerlo de esta manera?

Código PHP:

foreach ($_POST as $key => $value) {

}
echo 
$valor_post
????????
  #10 (permalink)  
Antiguo 08/12/2010, 10:01
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 5 meses
Puntos: 13
Respuesta: Variables globales en php???

Si, así puedes, aunque recomiendo algo más "estatico" así:

Código PHP:
if(isset($_POST['valor'])) {
   
$valor $_POST['valor'];
   
//hacemos una eventual validación
}else{
  echo 
"No ha introducido el campo";

Asi con cada valor y nos aseguramos que se halla enviado ese valor.

Si lo que quieres trabajar es con arreglos en formularios, en el nombre (atributo name) pones algo así, name="valor[]" en todos los campos que quieras, entonces en PHP te llega como un arreglo.


Código PHP:
if(isset($_POST['valor'])) {
   
$valor $_POST['valor'];
   if(
is_array($valor)) {
     
//Es arreglo, validamos cada uno
     
foreach($valor as $item) {
        
//hacemos una eventual validación
        //de cada elemento
     
}
   }else{
     
//tal vez es arreglo si o si, mostramos errores
   
}
}else{
  echo 
"No ha introducido el campo";


Etiquetas: globales, variables
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 15:06.