PHP - Perdida de sesion entre paginas

   
Vista:

Perdida de sesion entre paginas

Publicado por jexica (11 intervenciones) el 13/08/2014 21:39:40
Hola buenas tardes
Tengo un problema con las sesiones en php me sucede lo siguiente, estoy trabajando mi proyecto en un servidor de prueba uso wamp server y funciona todo bien, hoy pase mi aplicación al servidor de la empresa y me pasa que al cambiar de pagina pierdo la session con la que inicie, aqui les dejo el codigo

Valido clave y guardo el dato el la session
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
       session_start();
	require_once('usuario.php');
	require_once('../modelo/class_mysql.php');
	$cedula=$_POST['cedula'];
	$password=$_POST['pwd'];
	$_SESSION['cedula']=$_POST['cedula'];
       $_SESSION['password']=$_POST['pwd'];
 
	$usuario=new usuario();   //instanciamos la clase $nombreclase=new nombreclase();     
	$validarclave=$usuario->validarclave($cedula,$password); //$function=$clase->function(valores de inicio)
 
?>

Recupero la session y otros datos del formulario

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
<?php
	session_start();
	require_once('../modelo/class_mysql.php');
	require_once('equipo.php');
	require_once('usuario.php');
 
	$serial=$_POST['serial'];       // recojo datos del formulario equipo_nuevo 
    $nom_tipo=$_POST['nom_tipo'];
	$nom_marca=$_POST['nom_marca'];
	$modelo=$_POST['modelo'];
	$mac=$_POST['mac'];
    $ano=$_POST['ano'];
	$fecha_compra= $_POST['fecha_compra'];
	$garantia= $_POST['garantia'];
	$descripcion=$_POST['descripcion'];
	$nom_provee=$_POST['nom_provee'];
	$nom_tienda=$_POST['nom_tienda'];
	$nom_dpto=$_POST['nom_dpto'];
	$nom_nivel=$_POST['nom_nivel'];
	$nom_area=$_POST['nom_area'];
	$cedula=$_SESSION['cedula'];; // este dato viene de inicio de sesion del usuario
	$fecha_mod= date('y,m,j'); //este dato viene del sistema la fecha actual del mismo 			
 
	$equipo=new equipo();
 
       $equiponuevo=$equipo->equiponuevo($serial, $nom_tipo, $nom_marca, $modelo, $mac, $ano, $fecha_compra, $garantia, $descripcion, $nom_provee, $nom_tienda, $nom_dpto, $nom_nivel, $nom_area, $cedula, $fecha_mod);
 
?>

Aqui uso la clase equipo para insertar en la BD

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
47
48
49
50
51
52
53
<?php
require_once('../modelo/class_mysql.php');
class equipo {
//***********clase para gestionar funciones de los equipos 
 
	public function __construct () {
 
	$this->mysql = new mysql();
 
	}
 
	  //**********Registro de Equipo nuevo 
 
	function equiponuevo ($serial, $nom_tipo, $nom_marca, $modelo, $mac, $ano, $fecha_compra, $garantia, $descripcion, $nom_provee, $nom_tienda, $nom_dpto, $nom_nivel, $nom_area, $cedula, $fecha_mod){
 
		if(isset($serial) && !empty($serial) && // verifica campos obligatorios 
        isset($modelo) && !empty($modelo) &&
		isset($mac) && !empty($mac)) {
 
	 $conexion = $this->mysql->conectar();
 
		$sql="SELECT * FROM equipo WHERE serial='".$serial."';";
			if ($consulta = ($this->mysql->bd_mfa($sql,$conexion)) >0) {
 
				echo "<script type='text/javascript'>
							alert('Disculpe, este equipo ya existe');
						window.location='../vista/vista_equipo_nuevo.php';
					    </script>";  //equipo duplicado 
 
					}
 
	  	 $sql = "INSERT INTO equipo (serial, nom_tipo, nom_marca, modelo, mac, ano, fecha_compra, garantia, descripcion, nom_provee, nom_tienda, nom_dpto, nom_nivel, nom_area,id_cedula, fecha_mod) VALUES ('".$serial."', '".$nom_tipo."','".$nom_marca."', '".$modelo."', '".$mac."', '".$ano."', '".$fecha_compra."', '".$garantia."', '".$descripcion."', '".$nom_provee."', '".$nom_tienda."', '".$nom_dpto."', '".$nom_nivel."', '".$nom_area."', '".$cedula."', '".$fecha_mod."');"; //inserta los datos de equipo nuevo 
 
	 	$consulta = $this->mysql->consultar($sql,$conexion); //realiza la consulta en la BD
 
		echo  "<script type='text/javascript'>
							alert('Los datos han sido introducidos satisfactoriamente');
						window.location='../vista/vista_equipo_nuevo.php';
					    </script>";
 
		 return $consulta;  // retorno mi consulta 
 
		} else {
 
echo  "<script type='text/javascript'>
							alert('Error, no ha introducido todos los datos');
						window.location='../vista/vista_equipo_nuevo.php';
  					</script>";  // verificacion de introduccion de campos obligatorios termiacion del if 
}
       	$this->mysql->desconectar($conexion);
		 }
 
?>

Todo va bien cuando ingreso por primera vez, pero al regresar al menu principal y regresar de nuevo al formulario pierde la session y solo me sucede en el servidor de la empresa.

Espero alguien pueda ayudarme
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

Perdida de sesion entre paginas

Publicado por xve (5520 intervenciones) el 14/08/2014 09:30:04
Hola Jexica, en el código que nos muestras, no se eliminan las variables de sesión, por lo que tienes que estar... no se si en algún otro archivo las eliminas, pero con lo que nos muestras, no se ver porque no te funcionan.

Revisa el log del Apache, no vaya a ser que haya algún código que no le guste a las versiones de tu servidor.
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

Perdida de sesion entre paginas

Publicado por jexica (11 intervenciones) el 15/08/2014 18:34:09
Me parece que tienes razón con el log del apache, porque hoy tuve la oportunidad de montar mi sistema en otro servidor y funciono perfecto, seguiré buscando la solución y si encuentro algo les comento.
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

Perdida de sesion entre paginas

Publicado por Gonzalo (338 intervenciones) el 18/08/2014 19:42:45
tengo entendido que cualquier cosa que se envie al explorador antes de session_start crea problemas para recuperar la session.

yo tenia ese problema y lo arregle asi

<?php
session_start();

borra cualquier linea en blanco entre <?php y session_start y los espacios a la izquierda.

suerte.
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

Perdida de sesion entre paginas

Publicado por jexica (11 intervenciones) el 18/08/2014 20:10:34
Hola les comento que resolvi el problema, al parecer no le estaba gustando el codigo de insert en la BD
tenia esto
$sql = "INSERT INTO equipo (serial, nom_tipo, nom_marca, modelo, mac, ano, fecha_compra, garantia, descripcion, nom_provee, nom_tienda, nom_dpto, nom_nivel, nom_area,id_cedula, fecha_mod) VALUES ('".$serial."', '".$nom_tipo."','".$nom_marca."', '".$modelo."', '".$mac."', '".$ano."', '".$fecha_compra."', '".$garantia."', '".$descripcion."', '".$nom_provee."', '".$nom_tienda."', '".$nom_dpto."', '".$nom_nivel."', '".$nom_area."', '".$cedula."', '".$fecha_mod."');"; //inserta los datos de equipo nuevo


lo cambie por esto

$sql = "INSERT INTO equipo (serial, nom_tipo, nom_marca, modelo, mac, ano, fecha_compra, garantia, descripcion, nom_provee, nom_tienda, nom_dpto, nom_nivel, nom_area,id_cedula, fecha_mod) VALUES ($serial, '".$nom_tipo."','".$nom_marca."', '".$modelo."', '".$mac."', $ano, '".$fecha_compra."', '".$garantia."', '".$descripcion."', '".$nom_provee."', '".$nom_tienda."', '".$nom_dpto."', '".$nom_nivel."', '".$nom_area."', $cedula, '".$fecha_mod."');"; //inserta los datos de equipo nuevo

en ese momento del insert perdia la session
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
Imágen de perfil de xve

Perdida de sesion entre paginas

Publicado por xve (5520 intervenciones) el 18/08/2014 21:04:37
Hola Jexica, la verdad es que no se que tiene que ver la consulta SQL con las variables del sesión..;(
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

Perdida de sesion entre paginas

Publicado por jexica (11 intervenciones) el 18/08/2014 21:49:19
Bueno xve la verdad es que yo tampoco entendí que tiene que ver eso con la session, por que tuve la oportunidad como les comente de montarlo en otro servidor y funciono.

Tuve que pedir los permisos en la empresa para acceder al servidor de ellos y poder ir realizando las pruebas desde su servidor, fui probando con varios echo a ver en que momento estaba perdiendo el valor de la session y justamente en el insert se me convertia en "0" cero y eso me alojaba en la base de datos. El servidor es windows server 2003 con php 5.3.5 y apache 2.2.16.

Es bastante extraño pero de esa manera resolví.
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

Perdida de sesion entre paginas

Publicado por Diana (1 intervención) el 28/11/2014 20:30:10
Verificar que la ruta de la variable session.save_path en el php.ini apunte a tu carpeta de temporales... de lo contrario no la encontrara.
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