Foros del Web » Programando para Internet » PHP »

Problemas con las Sesiones en PHP

Estas en el tema de Problemas con las Sesiones en PHP en el foro de PHP en Foros del Web. aqui estoy molestando un poco al personal, gracias d antemano y espero puedan ayudarme. Estoy desarrollando una aplicacion web PHP-MySql, en la cual estoy incluyendo ...
  #1 (permalink)  
Antiguo 24/09/2008, 00:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Problemas con las Sesiones en PHP

aqui estoy molestando un poco al personal, gracias d antemano y espero puedan ayudarme.
Estoy desarrollando una aplicacion web PHP-MySql, en la cual estoy incluyendo sesiones... Es decir en el index cada usuario se debe loguear con unas claves antes facilitadas. Hasta ahi bien. Las comprobaciones si la sesion esta activa lo hace perfecto, pero... quiero darles a los usuarios unas series de privilegios, o accesos a las diferentes partes o secciones d la aplicacion.
Para ello me estaba valiendo de las "variables globales" que se suponen se pueden definir como $_SESSION["loquesea"]; si no me equivoco.
Pues eso me lo hace bien una vez, es decir, cuando el usuario se loguea y accede a la seccion a la q esta autorizado, recoge bien esa variable, que yo la llamo $_SESSION["privi"] (privilegios), solo una vez, en el momento que cambies de pantalla, o sea, que t direcciones a otra seccion o refresques, ya no lo recoge... y entonces aparece un mensage de "No tienes acceso a esta pagina". Haber si me podeis decir porq?

Gracias
  #2 (permalink)  
Antiguo 24/09/2008, 00:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problemas con las Sesiones en PHP

La pagina a la cual redireccionas (La que esta restringida) tiene un session_start()?
  #3 (permalink)  
Antiguo 24/09/2008, 00:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con las Sesiones en PHP

si... mira os dejo aqui los codigo de ident.php, que recoge el formulario de loggin y define la sesion:

<?PHP
$pass = $_POST['password'];
$user = $_POST['user'];
require "conecta.php";
$sql = "Select * From Operario Where NumOperario = '$user'";
$rs = $bd->consultar($sql);
$fila = mysql_fetch_array($rs);
// Comparo la contraseña inroducida en el loggin con la contraseña encriptada de la BD.
if (md5(sha1($pass))==$fila['Contraseña']) {
session_start();
$sid = session_id();
// Recojo los datos de privilegios de la BD y la Guardo en una variable global.
$_SESSION["privi"] = $fila['Privilegios'];
// Guardo tambien el numero de operario que recojo de la BD.
$_SESSION["user"] = $fila['NumOperario'];
session_write_close();
// Direcciono a ciertos usuarios a sus paneles personales de trabajo y al resto los direcciono al principal.php.
switch($_SESSION["user"]){
case 51:
header("Location: stockplancha.php");
break;
case 1017;
header("Location: panelincidencia.php");
break;
default:
header("Location: principal.php");
break;
}
}
// Si la contraseña no es válida muestra el siguiente error.
else{
echo "Error al introducir los datos...<br>";
?><a href="index.php">Volver</a><?
}
?>

y "comprobar.php" que lo que hace es comprobar que la sesion este activa:

<?
session_start();
if(!isset($_SESSION["user"])) {
header("Location: principal.php?opc=ident&comprueba=no");
}
?>

Este script, por supuesto lo incluyo en la pagina que necesito que controle los privilegios con un require "comprobar.php".
  #4 (permalink)  
Antiguo 24/09/2008, 01:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

a mi me pasa lo mismo que a ti, inicio bien la sesion y guardo bien la variable, pero al recargar esa misma página la variable de sesión no contiene nada...

a ver si alguien puede ayudarnos.

un saludo y gracias a todos de ante mano.
  #5 (permalink)  
Antiguo 24/09/2008, 01:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con las Sesiones en PHP

es mas... digo: voy a comprobar que contiene.
Probe con un echo... y la primera vez salian los privilegios, xq yo en la BD lo guardo como: privilegio1-privilegio2-privilegio3... etc luego tengo una funcion q m divide la cadena, resultante de la consulta, en trozos entre guion y guion.
Pues bien probe con el echo, como decia, y la primera vez m salen los privilegios pero cuando cargo otra pagina o refresco sale esto: Array.
Es otra cosa q no entiendo... y no se si tiene q ver en eso en que no aga bien su trabajo... Espero una pronta resolucion gracias.
  #6 (permalink)  
Antiguo 24/09/2008, 03:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problemas con las Sesiones en PHP

Aleluyaa!!! como siempre y despues de noches sin dormir he vuelto a solucionarme la papeleta.
Al parecer utilizaba directamente la variable global $_SESSION["privi"] para dividirlo en partes como ya explique antes.
La solucion que le e dao es q antes de operar con ella la e pasao a otra variable. Y todas las modificaciones y demas las ago con esa variable nueva.
De momento se a arregalo, aunq no dudo q pronto volvere a estar x aki. Espero q con mi ayuda puedas solucionar lo tuyo pier2384. Haz la misma comprobacion que e exo yo.

Un Saludo y gracias x las molestias q se an dado.
  #7 (permalink)  
Antiguo 24/09/2008, 04:19
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

fiestero_dg mil gracias por tu solucion, a mi me pasaba exactamente lo mismo, habia puesto tambien un echo y me salia "Array"...asi que espero estar en las mismas que tu probar tu solucion y que todo vaya bien.

Mil gracias,

voy a probar
  #8 (permalink)  
Antiguo 24/09/2008, 05:04
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

Nada, no hay manera, voy volverme loco!!

Mi problema varia ligeramente con el tuyo, y es que yo quiero recargar la misma pagina y acceder en la misma pagina recargada a los valores que guarde anteriormente.

El problema viene porque yo primero tengo que usar los valores guardados en las variables de sesion y luego tomar unos nuevos que sobrescribo en las variables de sesion.


-Primero inicio sesion:
Código PHP:
//Inicio sesion
session_start (); 
-Segundo, cargo las variables de sesion en unas nuevas variables para poder usarlas como decias:
Código PHP:
//Cargo las variables de sesion
$titulo_s $_SESSION["tit"];
$categoria_s $_SESSION["cat"];
$año_S $_SESSION["a"]; 
-Tercero, uso dichas variables en los option value.
Código PHP:
<option value="<? print $fila[0?><?php if($categoria_s == $fila[0]){ echo " selected"; } ?><? print $fila[0?> </option>
-Cuarto guardo las nuevas variables de sesion para que al recargar la pagina aparezcan estas nuevas:
Código PHP:
//Variables de sesion se guardan
$_SESSION["tit"] = "$titulo";
$_SESSION["cat"] = "$categoria";
$_SESSION["a"] = "$año"



a ver si alguien puede decirme que hago mal, o por qué falla esto.

Gracias de ante mano!!

Última edición por pier2384; 24/09/2008 a las 05:11
  #9 (permalink)  
Antiguo 24/09/2008, 05:17
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problemas con las Sesiones en PHP

que error te da?

la sintaxis seria asi:

$_SESSION["tit"] = $titulo;

sin las comillas

y si pones la parte completa del script seria mas facil saber lo que haces
  #10 (permalink)  
Antiguo 24/09/2008, 06:13
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

Es un buscador con un campo input text para buscar titulo, y otros dos campos que son categoria y año para selecionar de un desplegable el que quieras. Mas el boton de buscar.

Mi problema viene al paginar los resultados, al redireccionar a la misma pagina necesito tener guardados los datos seleccionados y lo intento hacer con variables de sesion, porque con $_POST lo intente y tampoco pude...

soy muy novato en php

El codigo es el siguiente:

Código:
<?PHP
   session_start ();
?>
<?PHP
	// Conectar con el servidor de base de datos
	$conexion = mysql_connect ("********")
         	or die ("No se puede conectar con el servidor. Sentimos las molestias.");

  	// Seleccionar base de datos
      	mysql_select_db ("******")
         	or die ("No se puede seleccionar la base de datos. Sentimos las molestias.");
				
	//Variables de sesion se cargan		
	$titulo_s = $_SESSION["tit"];
	$categoria_s = $_SESSION["cat"];
	$año_S = $_SESSION["a"];
	?>
				
	<div class="cabecera_buscador">
		<a href="imgs/ayuda.jpg" rel="lightbox" style="color:#2499c4;" title="Ayuda"><img src="imgs/ayuda.png" alt="Ayuda" style="margin-top:2px; margin-left:5px;" align="left"/></a>

               <form action="Obra.php" method="post" name="IFormBuscar">
			
                      <input type="text" name="O_Titulo" value="( Busca un cuadro )" onfocus="select()" size="35" class="caja_busqueda_imagen"/>
		      
                      <select name="O_Categoria" class="caja_busqueda_categoria">
							
				<div class="error_bd">
					<?PHP
					// Obtener los valores del tipo categoria
					$instruccion = "SELECT categoria FROM categoria";
      					$consulta = mysql_query ($instruccion, $conexion) 		   
		 				or die ("No se puede acceder a la base de datos. Sentimos las molestias.");
					?>
				</div><!--error bd-->
		
							              <?PHP									
			$nfilas = mysql_num_rows ($consulta);
						
			if ($nfilas > 0)
			{
				for ($i=0; $i<$nfilas; $i++)
				{
					$fila = mysql_fetch_array ($consulta);
					?> 
					<option value="<? print $fila[0] ?>" <?php if($categoria_s == $fila[0]){ echo " selected"; } ?>> <? print $fila[0] ?> </option>
					<?PHP
				}
			}
			?>
			<option value="Todas las categorias" <? if(print ($categoria_s)=="Todas las categorias"){echo " selected"; } ?>>Todas las categorias</option>
			</select>

			<select name="O_Año" class="caja_busqueda_año">
				<?PHP
				// Obtener los valores del tipo año
				$now = gmdate("Y");
				for ($i=1990; $i<=$now; $i++)
				{
					?> 
					<option value="<? print $i ?>"  <? if($año_s==$i){echo " selected"; } ?> > <? print $i ?> </option>
								
					<?PHP
				}
				?>
				<option value="Todos los años" <? if(print ($año_s)=="Todos los años"){echo " selected"; } ?> >Todos los años</option>						
			</select>
										
			<input type="submit" value="Buscar" name="Buscar" class="boton_buscar">		
								
	</form>
	
       <?PHP
	$titulo = $_REQUEST['O_Titulo'];
	$categoria = $_REQUEST['O_Categoria'];
	$año = $_REQUEST['O_Año'];
				
	$info = "Mostrados los cuadros ";
	if($titulo != "( Busca un cuadro )")
		$info = "Mostrados todos los cuadros de Estéfano cuyo nombre coincide con '$titulo'.";
	else
	{
		if ($categoria == "Todas las categorias" && $año == "Todos los años")
				$info = "Mostrados todos los cuadros de Estéfano.";
		else
		{
			if ($categoria != "Todas las categorias" && $año == "Todos los años")
   			$info = $info . "de la categoría '$categoria'. ";
			else if ($categoria == "Todas las categorias" && $año != "Todos los años")
    				$info = $info . "de '$año'. ";
			else if ($categoria != "Todas las categorias" && $año != "Todos los años")
    				$info = $info . "de la categoría '$categoria', de '$año'. ";						
		}
	}
	?>
				
       <div class="buscador_estado"><p><? print $info ?></p></div>
	</div><!--cabecera_buscador-->
			
	<div class="centre">
			
		<!-- Inicio Contenedor Izquierdo -->
		<div class="contenedor_izq">
			
	<?PHP
	  // Establecer el número de filas por página y la fila inicial
         $num = 10; // número de filas por página
         $comienzo = $_REQUEST['comienzo'];
         if (!isset($comienzo)) $comienzo = 0;
	       
				
   		// Enviar consulta
		$instruccion = "SELECT * FROM cuadros";

		$buscar = $_REQUEST['Buscar'];
		
		$titulo = $_REQUEST['O_Titulo'];
		if ($titulo != "( Busca un cuadro )")
    		$instruccion = $instruccion . " WHERE titulo LIKE '%$titulo%'";
		
		$categoria = $_REQUEST['O_Categoria'];
		if ($categoria != "Todas las categorias")
		{
			if ($titulo != "( Busca un cuadro )")
    			$instruccion = $instruccion . " AND categoria = '$categoria'";
			else
				$instruccion = $instruccion . " WHERE categoria = '$categoria'";
		}
			
    	$año = $_REQUEST['O_Año'];
		if ($año != "Todos los años")
		{
			if ($titulo != "( Busca un cuadro )" || $categoria != "Todas las categorias")
    			$instruccion = $instruccion . " AND año = '$año'";
			else
				$instruccion = $instruccion . " WHERE año = '$año'";
		}			
		?>
		<div class="error_bd">
			<?PHP
			// Calcular el número total de filas de la tabla		 
			 $instruccion = $instruccion . " order by año desc,mes desc";
			 $con = mysql_query ($instruccion, $conexion)		 		   
		 	 	or die ("No hay ningún cuadro que se ajuste a esa descripción.");
  			 $nfilas_pag = mysql_num_rows ($con);
			 
			
			 
			 //Realizar la consulta paginada			 
			 $instruccion = $instruccion ." limit $comienzo, $num";
			 $consulta = mysql_query ($instruccion, $conexion)		 		   
		 	 	or die ("No hay ningún cuadro que se ajuste a esa descripción.");
			 $nfilas = mysql_num_rows ($consulta);
			?>
		</div><!--error bd-->
		
		<?PHP
		
     // Mostrar resultados de la consulta
      $nfilas = mysql_num_rows ($consulta);
      if ($nfilas > 0)
      {			

         for ($i=0; $i<$nfilas; $i++)
         {
            $resultado = mysql_fetch_array ($consulta);
			?>
			<div class="obra">
				
				<!--cuadro--> 
				<a href="cuadros/<? print $resultado['archivo'];?>" rel="lightbox[galeria1]" title="<? print $resultado['titulo'];?>"><img src="cuadros/thumbs/<? print $resultado['archivo'];?>" alt="<? print $resultado['titulo'];?>" title="<? print $resultado['titulo'];?>"/></a>
				
				<div class="contenido_obra">
					<c>Título: </c>
	  				<d><?  print($resultado['titulo']);?></d>
					<br />
					<c>Categoría: </c>
	  				<d><?  print($resultado['categoria']);?></d>
					<br />
					<c>Año: </c>
 	  				<d><?  print($resultado['año']);?></d>
					<br />
				</div>
			</div>
			<?PHP
         }

      }
      else{
         ?>
		 <div class="error_bd">
		 <? print ("No hay ningún cuadro que se ajuste a esa descripción."); ?>
		 </div>
	  	 <?PHP
	  }
	  
	//Variables de sesion se guardan
	$_SESSION["tit"] = $titulo;
	$_SESSION["cat"] = $categoria;
	$_SESSION["a"] = $año;

// Cerrar conexión
   mysql_close ($conexion);
   
?>
			
			
			</div>
			<!-- Fin Contenedor Izquierdo -->

	</div>
	<!-- Fin Centre -->
	
	<div class="paginacion">
		<?PHP
	      if ($nfilas_pag > 0)
	      {

	      // Mostrar números inicial y final de las filas a mostrar
	         print ("Mostrando noticias " . ($comienzo + 1) . " a ");
	         if (($comienzo + $num) < $nfilas_pag)
	            print ($comienzo + $num);
	         else
	            print ($nfilas_pag);
	         print (" de un total de $nfilas_pag.\n");

	      // Mostrar botones anterior y siguiente
	         $estapagina = $_SERVER['PHP_SELF'];
	         if ($nfilas_pag > $num)
	         {
	            if ($comienzo > 0)
	               print ("[ <A HREF='$estapagina?comienzo=" . ($comienzo - $num) . "'>Anterior</A> | ");
	            else
	               print ("[ Anterior | ");
	            if ($nfilas_pag > ($comienzo + $num))
	               print ("<A HREF='$estapagina?comienzo=" . ($comienzo + $num) . "'>Siguiente</A> ]\n");
	            else
	               print ("Siguiente ]\n");
	         }
	      }
		 ?>
	</div>

gracias!!
  #11 (permalink)  
Antiguo 24/09/2008, 07:01
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problemas con las Sesiones en PHP

si te he entendido, guardas aqui las variables en la sesion

$titulo_s = $_SESSION["tit"];
$categoria_s = $_SESSION["cat"];
$año_S = $_SESSION["a"];

pero los campos del form los llamas de otra manera y han de ser iguales

<input type="text" name="O_Titulo" value="( Busca un cuadro )" onfocus="select()" size="35" class="caja_busqueda_imagen"/>

<select name="O_Categoria" class="caja_busqueda_categoria">


cuando las guardas en la sesion se llama $titulo_s

y en el form se llama O_titulo

no se si es el problema, pero miralo
  #12 (permalink)  
Antiguo 24/09/2008, 07:33
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

Si pero las variables de sesion que guardo como $categoria_s las uso dentro del select, para que ponga de las opciones que hay la que corresponde con el valor que tiene $categoria_s:

Código:
<option value="<? print $fila[0] ?>" <?php if($categoria_s == $fila[0]){ echo " selected"; } ?>> <? print $fila[0] ?> </option>
Así escribiria " selected" en la opción que yo habia guardado en la variable de sesion, y todo estaria bien, pero no se que pasa que no va, algo hay mal o no se puede hacer asi, o algo...


No tiene porque ser igual al valor de los select (O_Categoria), yo creo, por lo que he dicho.

Graciass por el interes y el consejo, lo probe y no me funciono...
  #13 (permalink)  
Antiguo 24/09/2008, 08:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problemas con las Sesiones en PHP

si envias mediante POST un campo de texto con nombre O_ano

has de recuperar la variable con POST al enviar el form

$ano= POST['O_ano'];

y para almacenar en la variable de sesion ese valor lo haces asi:

$ano=$_SESSION['O_ano'];

ahora el campo de texto llamado O_ano esta almacenado en la variable de sesion
  #14 (permalink)  
Antiguo 24/09/2008, 09:39
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Problemas con las Sesiones en PHP

jaronu mil gracias!!

ahora ya me funciona bien las variables de sesion y guarda lo que tiene que guardar, todo perfecto. Muchas gracias por tu ayuda!!
  #15 (permalink)  
Antiguo 31/05/2009, 19:03
 
Fecha de Ingreso: abril-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con las Sesiones en PHP

Hola,
yo tengo el mismo problema y no hay nada antes del session_start()... no sé q puede star pasando pero m stá volviendo loca...
Os pego por si a alguien se le ocurre alguna cosa...

Código PHP:
<?php  session_start();
session_name('Usuario');
$_SESSION['carrito']=$_REQUEST['documento'];
    
$navegador getenv("HTTP_USER_AGENT");
    if (
preg_match("/MSIE/i""$navegador"))
    {
$cab "<HTML><head><link href=\"defaultIE.css\" rel=\"stylesheet\" type=\"text/css\" /></head>";}
    else
    {
$cab "<HTML><head><link href=\"default.css\" rel=\"stylesheet\" type=\"text/css\" /></head>";}
echo 
$cab;    
?>
El warning es en la linea 1..

Warning: session_start() [function.session-start]: Node no longer exists in C:\AppServ\www\Parser.php on line 1

Como veréis en el código intento guardar una variable q recibo por POST de un Flash, será ese el problema?

A ver si a alguien se le ocurre algo...

Gracias!!
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:35.