Foros del Web » Programando para Internet » PHP »

Problemita con SESSION

Estas en el tema de Problemita con SESSION en el foro de PHP en Foros del Web. Hola amigos, buen inicio de semana para todos, les traigo otro problemilla, estoy trabajando con autentificacion y ya me sale todo perfectamente nada mas k ...
  #1 (permalink)  
Antiguo 18/09/2006, 09:41
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
Problemita con SESSION

Hola amigos, buen inicio de semana para todos, les traigo otro problemilla, estoy trabajando con autentificacion y ya me sale todo perfectamente nada mas k al momento de iniciar sesion me sale esto.

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
sesion_inicia.php
Código PHP:
session_start();
include('conex.php');
//$email_usu = $_SESSION['email_usu'];
//echo $_SESSION[autentificado];
  if (!isset($_SESSION['autentificado']))
      { 
   ?>
  <link href="shop_style.css" rel="stylesheet" type="text/css" />
    <br><br><br><br><br>
    <form name="iniciarsesion" action="sesion_procesa.php" method="post">
  <table width="250" border="0" align="center" cellpadding="0" cellspacing="0" class="tabla_menu">
   <tr>
   <td height="26" colspan="4" background="images/bg_blue_1.jpg"><div align="center" class="txt_blanco">
    <div align="left">Iniciar Sesion </div>
   </div></td>
   </tr>
   <tr class="slim">
   <td colspan="4">&nbsp;</td>
   </tr>
   <tr>
   <td width="5"></td>
   <td width="30" class="Estilo4 Estilo1 txta"><div align="right"><span class="Estilo7">Correo:</span></div></td>
   <td colspan="2"><input name="correo"  value="[email protected]" type="text" class="caja" id="correo" size="32" /></td>
   </tr>
   
   <tr>
   <td width="5" height="5">&nbsp;</td>
   <td width="30" height="5" class="Estilo4 Estilo1 txta"><div align="right"><span class="Estilo7">Contrase&ntilde;a:</span></div></td>
   <td height="5" colspan="2"><input name="pass" value="1" type="text" class="caja" id="pass" size="32" /></td>
   </tr>
   <tr>
   <td height="5">&nbsp;</td>
   <td height="5" class="txta Estilo8">&nbsp;</td>
   <td height="5"><div align="right">
     <input type="submit" name="Submit" value="Entrar">
   </div></td>
   <td width="2">&nbsp;</td>
   </tr>
   <tr class="slim">
   <td height="5" colspan="4" class="txta"><div align="justify" class="txtregistro"><br />
     Sino eres usuario registrado de PC Shop, 
     Registrate Gratis y disfruta de los beneficios que nuestra empresa tiene para ti, 
     que esperas <a href="index.php?secc=registro">Registrate Ahora</a> <br />
     <br />
   </div></td>
   </tr>
  </table>
 </form>
   <?php 
   
} else {
         
$email_usu $_SESSION['email_usu'];   
  
//Sentencia SQL para buscar un usuario con esos datos 
  
$query "SELECT nombre_usu, apellidos_usu, email_usu FROM usuario WHERE email_usu='$email_usu'"
  
  
$result mysql_query($query,$conex) or die( mysql_error() );  
  
  while (
$row mysql_fetch_array($result)) {
   
$nombre_usu $row["nombre_usu"];
   
$apellidos_usu $row["apellidos_usu"];
   
$email_usu $row["email_usu"];
   
session_start(); 
   
session_register("nombre_usu"); 
   
$nombre_usu $nombre_usu
   
session_register("apellidos_usu"); 
   
$apellidos_usu $apellidos_usu
   
session_register("email_usu"); 
   
$email_usu $email_usu
    }
    echo 
"Bienvenido $nombre_usu $apellidos_usu.";
       }
    
 
mysql_close($conex);
sesion_procesa.php
Código PHP:
<?php 
  
include('conex.php'); 
  
//if (isset($_POST['submit'])) {
  
$correo $_POST['correo'];
  
$pass $_POST['pass'];
  
$query "SELECT nombre_usu, apellidos_usu, email_usu FROM usuario WHERE email_usu='$correo' and pass_usu='$pass'"
  
$result mysql_query($query,$conex) or die( mysql_error() );  
  
  if (
mysql_num_rows($result)!=0){ 
  
//usuario y contraseña válidos 
  //defino una sesion y guardo datos 
  
session_start(); 
  
session_register("autentificado"); 
  
$autentificado "SI"
  
session_register("email_usu"); 
  
$email_usu $correo
  
?> <meta http-equiv="refresh" content="0;URL=index.php?secc=sesion_iniciar"/> <?php
  
//header ("Location: index.php?secc=sesion_iniciar"); 
 
}else { 
  
//si no existe le mando otra vez a la portada 
  
?> <meta http-equiv="refresh" content="0;URL=index.php?secc=hola"/> <?php
  
}  
?>
  #2 (permalink)  
Antiguo 18/09/2006, 15:18
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
Exclamación Help Me!!! =(

Alguien me podria explicar cual es la cusa posible de este error:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
sesion_inicia.php

ya analize mi codigo y no capto bien k es =(
  #3 (permalink)  
Antiguo 18/09/2006, 16:29
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 1
Hola omegafunky,

no había visto nunca el aviso que te da a tí así que me ha dado por miarlo. Bucando en google y en la documentación de php.net [1] he encontrado una posible razón.

En uno de los comentarios dejados en [1] Christian Boltz <php-manual at cboltz dot de> dice:
Cita:
You'll get this warning if $_SESSION['var'] contains NULL and you assign
anything (except NULL) to the global variable $var.

The warning will _not_ appear:
- if $_SESSION['var'] contains anything else - or -
- if you don't use a global variable named $var
que con mi inglés de andar por casa entiendo como:
Cita:
Obtendrás este aviso si $_SESSION['var'] contiene el valor NULL y asignas cualquier otro valor (excepto NULL) a la variable global $var. Este aviso no aparecerá:
- si $_SESSION['var'] contiene cualquier otra cosa o
- si no utilizas la variable global $var
Resumiendo, y si he entendido bien tu problema puede venir dado por el uso que haces de la variable de sesión $_SESSION['email_usu'] y de la variable global $email_usu (fijate que las utilizas en el bloque else antes de hacer la consulta del documento sesion_inicia.php) Prueba a cambiar la línea por esta otra:
Código PHP:
$emailUsu $_SESSION['email_usu']; 
Prueba a cambiar el nombre de la variable y dinos. Ciao

[1] http://es2.php.net/manual/es/ref.session.php

P.D. Esto parece suceder en entornos en los que están activadas las register_globals() te aconsejo que las desactives.
Código PHP:
ini_set('register_globals''off'); 
__________________
http://www.nosoynadie.net/
  #4 (permalink)  
Antiguo 18/09/2006, 17:15
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
me sige marcando lo mismo y no entiendo x k ya desactive las variables globales =(
  #5 (permalink)  
Antiguo 19/09/2006, 01:34
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 1
Hola,
leyendo más documentación de sesiones [1] leemos:
Cita:
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
Por ello, te he modificado la parte del else donde haces uso de session_register() para eludir esta sentencia (ya que no funciona en entornos en los que tengamos la directiva 'register_globals' desactivada). Tu código:
Código PHP:
else {
    
$email_usu $_SESSION['email_usu'];   
  
//Sentencia SQL para buscar un usuario con esos datos 
    
$query "SELECT nombre_usu, apellidos_usu, email_usu FROM usuario WHERE email_usu='$email_usu'"
    
$result mysql_query($query,$conex) or die( mysql_error() );  
    while (
$row mysql_fetch_array($result)) {
        
$nombre_usu $row["nombre_usu"];
        
$apellidos_usu $row["apellidos_usu"];
        
$email_usu $row["email_usu"]; 
        
session_start(); 
        
session_register("nombre_usu"); 
        
$nombre_usu $nombre_usu
        
session_register("apellidos_usu"); 
        
$apellidos_usu $apellidos_usu
        
session_register("email_usu"); 
        
$email_usu $email_usu
    }
    echo 
"Bienvenido $nombre_usu $apellidos_usu.";
}
mysql_close($conex
El que te propongo:
Código PHP:
else {
    
$query "SELECT nombre_usu, apellidos_usu, email_usu FROM usuario WHERE email_usu='".$_SESSION['email_usu']."'"
    
$result mysql_query($query,$conex) or die( mysql_error() );  
    while (
$row mysql_fetch_array($result)) {
        
$nombre_usu $row["nombre_usu"];
        
$apellidos_usu $row["apellidos_usu"];
        
$email_usu $row["email_usu"]; 
        
session_start(); 
        
//session_register("nombre_usu");
        //session_register("apellidos_usu");
        //session_register("email_usu");  
        
$_SESSION['nombre_usu'] = $nombre_usu
        
$_SESSION['apellidos_usu'] = $apellidos_usu
        
$_SESSION['email_usu'] = $email_usu
    }
    echo 
"Bienvenido $nombre_usu $apellidos_usu.";
}
mysql_close($conex
Revisa tu código, elimina session_register() de él y a ver que pasa. Ciao

P.D. otra opción es editar el php.ini y hacer lo que te dice el aviso:
Cita:
setting session.bug_compat_42 or session.bug_compat_warn to off
[1] http://es2.php.net/manual/en/functio...n-register.php
__________________
http://www.nosoynadie.net/
  #6 (permalink)  
Antiguo 19/09/2006, 08:50
Avatar de omegafunky  
Fecha de Ingreso: diciembre-2003
Ubicación: Tabasco, Mexico
Mensajes: 3.534
Antigüedad: 20 años, 3 meses
Puntos: 33
Hola grax x tu sugerencia y x el tiempo dedikado, la probe y si ya no me marca error pero no me guarda las variables y es k el problema como te decia me marca ese error de Warning: Unknown... pero si le doy refresh ya no me lo marca, no c esta raro ya le di vueltas y vuelta y na, pero si la bronca esta en la sesion
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:39.