PHP - Problema de Variables de una sesion a otra

 
Vista:

Problema de Variables de una sesion a otra

Publicado por Alfredo Aquino (5 intervenciones) el 11/10/2013 22:21:46
Hola., a que se debe que al utilizar variables en una sesion no se logra ver los datos en una sesion posterior, esto subiendolo a un host de paga, pero si lo hago de manera local, las variables de una sesion a otra funcionan sin mayor problema. Se utilizo Php 5.2.3, Apache 2.2.4 y MySql 5.0.41. Algun dato, parametro o version puede estar mal?. Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema de Variables de una sesion a otra

Publicado por xve (6935 intervenciones) el 12/10/2013 09:59:04
Hola Alfredo, no me queda claro que quieres decir con "una sesion posterior"

Las variables de sesión tienen una vida de unos 30 minutos por defecto.

Si nos puedes comentar con mas detalle.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Alfredo Aquino (5 intervenciones) el 12/10/2013 15:37:15
Hola, buenos dias. Tengo un archivo autentificacion-sesion.php en donde ingreso mis datos de usuario y contraseña ademas de elegir en que region me encuentro y son esos datos que se graban como variables en la sesion para posteriormente utilizarlo en el archivo que esta mas abajo que se llama Solicitud.php, si lo hago de manera local en mi equipo todo funciona bien, es decir la variables guardadas en la autentificacion se logra ver en la Solicitud pero ya al subirlo a un host de paga, simple y sencillamente las variables guardadas en la autentificacion ya no se logran ver en la Solicitud. Les dejo una porcion del codigo de autentificacion-sesion.ph y Solicitud.php.
Gracias por tu apoyo.

autentificacion-sesion.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
  session_start();
  $clave = ucwords($_POST['clave']);
  $contraseña = $_POST['contraseña'];
  $rregion = $_POST['rregion'];
 
  $_SESSION['resregion']=$rregion;
  $_SESSION['resclave']=$clave;
 
  $_SESSION['rescontraseña']=$contraseña ;
 
  if (isset($_SESSION['usuario_valido']))
  {
    echo 'Usted ya inicio sesion como: '.$_SESSION['usuario_valido'].' <br />';
    echo '<a href="salir.php">Para Salir</a><br />';
	exit();
  }
  if(!isset($_POST['clave'])&&!isset($_POST['contraseña'])   &&!isset($_POST['rregion'])) //Si las variables no existen
  {
						// el  visitante tiene que introducier un nombre y una contraseña
 
?>
 
	<html>
		<head>
		<script language="JavaScript" type="text/JavaScript">

Solicitud.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
	session_start();
	echo "Iniciaste sesi&oacute;n como: <strong>$_SESSION[usuario_valido]</strong>";
 
  				//variable que contiene el nombre de la region.
    			$reg=$_SESSION['resregion'];
    			//variable que contiene el nombre  del usuario
    			 $nom=$_SESSION['resclave'];
    			//variable de sesion que contiene la clave de la region.
    			$claver= $_SESSION['clvregion'];
 
    			//variable que contiene la contraseña del usuario.
    			$contraseña=$_SESSION['rescontraseña'];
 
 
  				//establesca la conexion a mysql.
		  		include ("conexion.php");
				$conexion=conectar();
			  	//esto es la consulta para que se muestren los datos de la tabla requerimientos
				  $sqlreq = "select * from requerimientos";
				  $registrosreq = mysql_query($sqlreq, $conexion);
 
			  		//para obtener datos de la tabla departamentos-regiones.
 
				  $sqldep2 = "select departamentos_regiones.id_depto,nom_depto from departamentos_regiones,departamentos where departamentos_regiones.id_region='$claver' and
				  departamentos_regiones.id_depto=departamentos.id_depto ";
 
				  $registrosdep2 = mysql_query($sqldep2, $conexion);
 
				 	//para obtener el id_u de de la tabla USUARIOS
					$sqlu="select * from usuarios where nom_u='$nom' and contrasena_u='$contraseña'";
		    		$registrosu = mysql_query($sqlu, $conexion);
		    		$regu=mysql_fetch_object($registrosu);
 
		    		//el id_u, nombre y apellido que utilizara en la solicitud.
		    		$_SESSION['id_u']=$regu->id_u;
		    		$_SESSION['nom_u']=$regu->nom_u;
		    		$_SESSION['apellido_u']=$regu->apellido_u;
		    		//echo $_SESSION['apellido_u'];
 
?>
  <html>
		<head>
 
	</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Mari Carmen (145 intervenciones) el 13/10/2013 14:57:50
A ver, es posible que como dice en la pagina de php.net (ref:http://www.php.net/manual/es/function.session-start.php) sea necesario pasar la id de sesión via GET, POST o COOKIE.

Por otra parte por lo que he podido ver en tu archivo autenticacion-sesion.php hay trozos de código que no deberían estar en ese orden.
Aquí el código que me parece mucho más acertado a la hora de hacer autenticaciones.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
    session_start();
 
    /* Si ya esta registrado entonces no hacemos nada de lo que hay en este archivo.
     * Más que nada por que estariamos reescribiendo las variables de sesión del 
     * usuario ya registrado.
     */
    if (isset($_SESSION['usuario_valido'])){
        echo 'Usted ya inicio sesion como: '.$_SESSION['usuario_valido'].' <br />';
        echo '<a href="salir.php">Para Salir</a><br />';
        exit();
    }
 
    /* Comprobamos variables de entrada y si no existen le ponemos un false.
     * Nota: No es mala práctica escapar las entradas que vayamos a usar en una 
     * BBDD más que nada por evitar XSS o algún SQL Inyection
     */
    $clave      = ((isset($_POST['clave'])      && $_POST['clave']!=""      )?ucwords($_POST['clave']):false);
    $contraseña = ((isset($_POST['contraseña']) && $_POST['contraseña']!="" )?$_POST['contraseña']    :false);
    $rregion    = ((isset($_POST['rregion'])    && $_POST['rregion']!=""    )?$_POST['rregion']       :false);
 
    /* Antes de hacer nada más deberíamos determinar si están todas las variables
     * que necesitamos
     */
    if($clave===false && $contraseña===false && $rregion===false) {
        die( "No autenticado");
    }
 
    /* Cuando sabemos que las variables están bien entonces las asignamos a la 
     * variable de sesión y hacemos el resto que queremos hacer.
     */
    $_SESSION['resregion']=$rregion;
    $_SESSION['resclave']=$clave;
    $_SESSION['rescontraseña']=$contraseña ;
?>

Prueba lo de pasar el id de sesión y nos comentas.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Alfredo Aquino (5 intervenciones) el 14/10/2013 15:58:24
ya pase el Id de sesion y sigo en las mismas. Será que del lado del servidor le faltara alguna aplicacion? Porque esta aplicacion estaba trabajando bien en un servidor compartido de paga que teniamos y al cambiarlo a un servidor dedicado de paga del mismo proveedor, se nos presento este problema. Ya realice la instalacion del WampServer en dos equipos con diferentes sistemas operativos y realice las pruebas de forma local y todo funciona sin ningun problema. Qur podrá ser?

Saludos y gracias por el apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Mari Carmen (145 intervenciones) el 14/10/2013 16:36:25
No creo que le falte algo, pero es posible que la configuración en php.ini no sea la misma.
Puedes comparar las diferencias entre tu servidor local en donde funciona y el servidor remoto haciendo un phpinfo() y comparas los dos resultados.

Aquí http://php.net/manual/es/session.configuration.php tienes la explicacion de las opciones del php.ini sobre las sesiones. Deberías mirar si hay alguna que te convenga cambiar en el servidor remoto por que es distinta que en tu servidor local. A saber.

Espero te sirva de ayuda para encontrar el fallo.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Alfredo Aquino (5 intervenciones) el 14/10/2013 19:28:02
Hola, este es la configuracion de Php.ini del lado del servidor y es la version 5.3.3.

; ATTENTION!
;
; DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
; SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.

[PHP]
tidy.clean_output = Off
include_path = ".:"
mysql.allow_persistent = Off
mysql.max_links = -1
safe_mode_allowed_env_vars = PHP_
session.bug_compat_42 = Off
mysql.connect_timeout = 60
session.use_only_cookies = 1
register_argc_argv = Off
open_basedir = "/var/www/vhosts/grupoazul.com.mx/:/tmp/"
session.name = PHPSESSID
session.hash_function = 0
magic_quotes_runtime = Off
log_errors_max_len = 1024
mssql.secure_connection = Off
pgsql.max_links = -1
variables_order = "GPCS"
sybct.allow_persistent = On
max_input_time = 60
odbc.max_links = -1
session.save_handler = files
session.save_path = "/var/lib/php/session"
session.cookie_lifetime = 0
pgsql.auto_reset_persistent = Off
session.cache_expire = 180
error_reporting = E_ALL & ~E_DEPRECATED
safe_mode_gid = Off
auto_prepend_file =
sendmail_path = /usr/sbin/sendmail -t -i
sybct.min_client_severity = 10
pgsql.max_persistent = -1
auto_globals_jit = On
soap.wsdl_cache_ttl = 86400
allow_url_fopen = On
smtp_port = 25
register_globals = On
display_startup_errors = Off
user_dir =
mssql.min_error_severity = 10
mysqli.max_links = -1
default_socket_timeout = 60
session.serialize_handler = php
session.hash_bits_per_character = 5
unserialize_callback_func =
default_mimetype = "text/html"
magic_quotes_gpc = On
safe_mode_include_dir =
max_execution_time = 60
mail.add_x_header = On
upload_max_filesize = 128M
register_long_arrays = Off
safe_mode = off
zlib.output_compression = Off
safe_mode_protected_env_vars = LD_LIBRARY_PATH
odbc.max_persistent = -1
mssql.compatability_mode = Off
file_uploads = On
mysqli.reconnect = Off
session.cookie_domain =
mssql.allow_persistent = On
mysql.max_persistent = -1
mssql.max_links = -1
session.use_trans_sid = 0
mysql.default_socket =
mysqli.default_pw =
odbc.defaultbinmode = 1
sybct.max_persistent = -1
output_buffering = 4096
doc_root =
log_errors = On
mysql.default_host =
request_order = "GP"
display_errors = Off
mysqli.default_socket =
safe_mode_exec_dir =
html_errors = Off
session.entropy_length = 0
y2k_compliance = On
post_max_size = 8M
asp_tags = Off
memory_limit = 128M
short_open_tag = On
SMTP = localhost
precision = 14
session.bug_compat_warn = Off
sybct.min_server_severity = 10
mssql.min_message_severity = 10
session.gc_maxlifetime = 1440
session.gc_probability = 1
allow_url_include = Off
mysqli.default_host =
mysqli.default_user =
session.referer_check =
pgsql.log_notice = 0
mysql.default_port =
odbc.defaultlrl = 4096
pgsql.ignore_notice = 0
mysql.trace_mode = Off
engine = On
odbc.allow_persistent = On
track_errors = Off
pgsql.allow_persistent = Off
session.auto_start = 0
auto_append_file =
disable_classes =
mysql.default_password =
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
allow_call_time_pass_reference = Off
ignore_repeated_source = Off
sql.safe_mode = Off
session.cookie_path = /
session.entropy_file =
expose_php = Off
report_memleaks = On
upload_tmp_dir = /tmp
session.gc_divisor = 1000
mssql.max_persistent = -1
serialize_precision = 100
odbc.check_persistent = On
sybct.max_links = -1
define_syslog_variables = Off
session.cookie_httponly =
session.cache_limiter = nocache
enable_dl = Off
ignore_repeated_errors = Off
mysqli.default_port = 3306
disable_functions =
magic_quotes_sybase = Off
soap.wsdl_cache_enabled = 1
soap.wsdl_cache_dir = "/tmp"
session.use_cookies = 1
mysql.default_user =
implicit_flush = Off
bcmath.scale = 0

Las que puse en Negrita de la lista de arriba, en la configuracion php.ini del equipo local la tiene invertida, o sea:
session.use_only_cookies = 0
register_globals = Off

La version de Php del equipo local es la 5.2.3.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Mari Carmen (145 intervenciones) el 14/10/2013 22:12:28
Según la documentación PHP.
# session.use_only_cookies -> http://www.php.net/manual/es/session.configuration.php#ini.session.use-only-cookies Dice que obligatoriamente has de pasar el id de sesión por cookies. Así que te insto de nuevo a que pruebes guardando el id de sesión como una cookie.
# register_globals -> Obsoleta en PHP 5.3 y Eliminada en 5.4. Esta opción registra las variables estilo $_POST["variable1"] como $variable1. Esto es posible que sea contraproducente si no inicializamos las variables que usamos en nuestro código. Te dejo la página de la documentación en donde lo explican mucho mejor que yo.http://www.php.net/manual/es/security.globals.php

Posiblemente el problema esté en sessión.use_only_cookies. Pero es fácil arreglarlo. Simplemente guardas la sesion_id en una coockie.

Lo que puedes hacer es setear en local la misma configuración que en el remoto y probar a ver si funciona y como funciona, así te evitaras problemas por incompatibilidades por configuraciones en futuras ocasiones.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de Variables de una sesion a otra

Publicado por Alfredo Aquino (5 intervenciones) el 12/10/2013 15:56:02
Les comento que esta pequeña aplicacion estuvo ya varios años funcionando en un host compartido, pero se requirio por parte de la empresa contratar un servidor dedicado con el mismo proveedor y este migro toda la informacion del host compartido al host dedicado, presentando el problema que he expuesto anteriormente a partir de ese cambio. Le faltara alguna aplicacion al host dedicado?

Saludos y gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema de Variables de una sesion a otra

Publicado por Elier (92 intervenciones) el 14/10/2013 17:41:55
Prueba este test

http://www.php.net/manual/en/ref.session.php#83625
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar