Foros del Web » Programando para Internet » PHP »

problema con session entre paginas

Estas en el tema de problema con session entre paginas en el foro de PHP en Foros del Web. Hola necesitaria que me ayuden con lo siguiente, tengo una pagina de inicio (index) en la cual hago q se cargue un formulario de loguin ...
  #1 (permalink)  
Antiguo 18/03/2013, 08:55
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago del estero
Mensajes: 18
Antigüedad: 11 años, 5 meses
Puntos: 0
problema con session entre paginas

Hola necesitaria que me ayuden con lo siguiente, tengo una pagina de inicio (index) en la cual hago q se cargue un formulario de loguin si es que no existe $_SESSION['username'] y si existe cargo otro formulario q me permite cerrar la sesion del usuario o ir a la cuenta del usuario para modificar sus datos.
El codigo de las paginas es el siguiente:

index3.php

<!DOCTYPE html>
<html>
<head> <link rel="stylesheet" href="estilol.css" type="text/css" />
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- include jQuery library -->
<script type="text/javascript" src="./js/jquery.min.js"></script>
<!-- include Cycle plugin -->
<script type="text/javascript" src="./js/jquery.cycle.all.js"></script>
<script>
function deshabilita(loguinf)
{
if ((loguinf.loguinusuario.value != "") && (loguinf.loguinpass.value != ""))
{ loguinf.loguin.disabled = false; }

else {
loguinf.loguin.disabled = true; }
}

</script>

</head>
<?php
session_start();
include_once "conexion.php";
function verificar_login($user,$password,&$result) {
$sql = "SELECT * FROM usuario WHERE email = '$user' and password = '$password'";
$rec = mysql_query($sql);
$count = 0;
while($row = mysql_fetch_object($rec))
{
$count++;
$result = $row;
}
if($count == 1)
{
return 1;
}
else
{
return 0;
}
}


if(!isset($_SESSION['userid']) && isset($_POST['loguin']) )
{

if(verificar_login($_POST['loguinusuario'],md5(md5($_POST['loguinpass'])),$result) == 1)
{ session_start();
$_SESSION['userid'] = $result->id;
$_SESSION['pass']=$result->password;
$_SESSION['email'] = $result->email;
$_SESSION['username'] = $result->nombreyapellido;
$_SESSION['permitemail']=$result->permite_email;
$_SESSION['fechanacimiento']=$result->fecha_nacimiento;
$_SESSION['ciudad']=$result->ciudad_usuario_id;
$_SESSION['telfijo']=$result->telfijo;
$_SESSION['telcelu']=$result->telcelu;
$_SESSION['estado'] = "Logueado";

header("location:index3.php");
}

if(verificar_login($_POST['loguinusuario'],md5(md5($_POST['loguinpass'])),$result) == 0)
{
header("location:logueo.php");

}
}
?>
<body><?php session_start();?>
<div id="cabecera">
<div id="header">
<div id="hgroup">

<?php
if(isset($_SESSION['userid'])){

echo ' <form name="loguinfu" method="post" >
<div style="float:right;">
<div style="position:relative;top:30px;right: 20px;">
Bienvenido '.$_SESSION['username'].'
<a href="./micuenta.php" target="_self"> <input type="button" name="boton" value="Mi cuenta" /> </a>
<input type="submit" name="salir" id="salir" value="Salir" >
<input type="submit" name="micuenta" id="micuenta" value="Mi cuenta" >
</div>
</div>
</form>
';


}
if(!isset($_SESSION['userid'])){
echo ' <form name="loguinfl" action="index3.php" method="post" >
<div style="float:right;">
<div style="position:relative;top:20px;">
<a href="/elsitio.com.ar">Registrate gratis y comenza a obtener descuentos!</a>
</div>
<div style="position:relative;top:30px;right: 20px;">
<input type="submit" name="loguin" id="loguin" value="Iniciar sesion" disabled>
Usuario:<input type="text" name="loguinusuario" id="loguinusuario" onkeyup="deshabilita(this.form)"/>
Clave:<input type="password" name="loguinpass" id="loguinpass" onkeyup="deshabilita(this.form)"/>
<a href="/elsitio.com.ar">Olvido su clave?</a>
</div>
</div>
</form>
';
}

if(isset($_POST['salir'])){

session_unset();
session_destroy();
echo'
<script type="text/javascript">
window.location="indexnsnds3.php";
</script>';
// header("Location:/indenmnnx3.php");

}
if(isset($_POST['micuenta'])){
session_start();
echo'
<script type="text/javascript">
window.location="micuenta.php";
</script>';
}

?>
  #2 (permalink)  
Antiguo 18/03/2013, 08:57
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago del estero
Mensajes: 18
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: problema con session entre paginas

<div style="float:left;">
<a href="./index3.php"><img src="./images/logo/elsitio.png" style="height:96px;width: 160px;border:none;"/></a>
</div>
</div>
<ul id="menu-lavalamp">
<li><a href="./ofertadeldia.php">OFERTA DEL DIA</a></li>
<li><a href="./otrasofertas.php">OTRAS OFERTAS</a></li>
<li><a href="./comofunciona.php">COMO FUNCIONA</a></li>
<li><a href="./ofertascerradas.php">OFERTAS CERRADAS</a></li>
<li><a href="./loguin.php">ENTRAR</a></li>
<li><a href="./registrarse.php">REGISTRARSE</a></li>
<div id="conten-lava">
<div id="lavalamp"></div>
</div>
</ul>
<div id="separador_horizonal"></div>
</div>
</div>

<div id="contenido">
<?php

function encrypt($string, $key) {
$result = '';
for ($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key)) - 1, 1);
$char = chr(ord($char) + ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$semilla="1111";
?>
<div id="aside">

<div id="asideuno">
<?php
$resultasideuno = mysql_query("select * from oferta where prioridad = 2");

while ($row = mysql_fetch_array($resultasideuno)) {
echo '

<a href="cupon.php?'.encrypt($row['id'],$semilla).'">
<div class="ofertacargaraside">
<div class="ofertadescripcargaraside">
<div class="ofertadescripcargartituloaside">
<label id="tituloferta" >' . $row["titulo_principal"] . '</label>
</div>
<div class="minidescripcionofertacargaraside">
<label id="minidescripcionoferta">' . $row["titulo_secundario"] . '</label>
</div>

</div>
<div class="ofertaimagencargaraside">
<div class="etiquetacargaraside">
<div class="etiquetapreciocargaraside">
%<label id="descuentoporcentaje">'.$row["descuento"].'</label>
</div>

<div class="precioscargaraside">
<div class="preciofertacargaraside">
Antes <label id="precio">'.$row["precio"].'</label>
</div>
<div class="ahoraofertacargaraside">
$<label id="preciocondesc">' .(($row['precio'])-($row["precio"]*$row['descuento']/100)) . '</label><div class="ahoraofertavercargar">Ver</div>
</div>
</div>

</div><div>
<img src="./'.$row['foto'].'" />
</div>
</div>

</div>
</a>
';
}
mysql_free_result($resultasideuno);
?>
</div>

<div id="asidedos">
<?php
$resultasidedos = mysql_query("select * from oferta where prioridad = 3");

while ($row = mysql_fetch_array($resultasidedos)) {
echo '
<a href="cupon.php?'.encrypt($row['id'],$semilla).'">
<div class="ofertacargaraside">
<div class="ofertadescripcargaraside">
<div class="ofertadescripcargartituloaside">
<label id="tituloferta" >' . $row["titulo_principal"] . '</label>
</div>
<div class="minidescripcionofertacargaraside">
<label id="minidescripcionoferta">' . $row["titulo_secundario"] . '</label>
</div>

</div>
<div class="ofertaimagencargaraside">
<div class="etiquetacargaraside">
<div class="etiquetapreciocargaraside">
%<label id="descuentoporcentaje">'.$row["descuento"].'</label>
</div>

<div class="precioscargaraside">
<div class="preciofertacargaraside">
Antes <label id="precio">'.$row["precio"].'</label>
</div>
<div class="ahoraofertacargaraside">
$<label id="preciocondesc">' .(($row['precio'])-($row["precio"]*$row['descuento']/100)) . '</label><div class="ahoraofertavercargar">Ver</div>
</div>
</div>

</div><div>
<img src="./'.$row['foto'].'" />
</div>
</div>

</div>
</a>
';
}
mysql_free_result($resultasidedos);
?>
</div>
</div>
<div id="section">





<?php
$results = mysql_query("select * from oferta where prioridad = 1");

while ($rows = mysql_fetch_array($results)) {
echo '
<a href = "cupon.php?'.encrypt($rows['id'],$semilla).'">
<div id = "cuponprincipal">
<div class = "detallesprincipal">
<div class = "tituloprincipal">
<label id = "tituloprincipallabel">'.$rows['titulo_principal'].'</label>
</div>
<div class = "descprincipal">
<label id = "descprincipallabel">'.$rows['titulo_secundario'].'</label>
</div>
</div>
<div class = "imagenprincipal">

<div class = "fotoprincipal">
<img CLASS = "img_prev" src = "./'.$rows['foto'].'" alt = "aqui se cargara la imagen" style = "width: 600px;height: 450px;"/>
</div>
<div class = "promodelcupon">
<div class = "valorreal">
<div class = "textopromo">VALOR REAL:</div> $<label id = "valorrealdelcupon">'.$rows['precio'].'</label>
</div>
<div class = "descuentodelcupon">
<div class = "textopromo">DESCUENTO</div>%<label id = "porcentajededescuento">'.$rows['descuento'].'</label>
</div>
<div class = "ahorro">
<div class = "textopromo">AHORRO:</div> $<label id = "importedeahorro">'.(($rows['descuento']*$rows['precio'])/100).'</label>
</div>
<div id = "precioprincipal">
$<label id = "costocupon">'.(($rows['precio'])-($rows["precio"]*$rows['descuento']/100)).'</label>
<div class = "textopromo">COMPRAR</div>
</div>
</div>

</div>


</div>
</a>
';}
?>
<div id="galeria" >

<?php
include "conexion.php";
  #3 (permalink)  
Antiguo 18/03/2013, 08:58
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago del estero
Mensajes: 18
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: problema con session entre paginas

$result = mysql_query("select * from oferta where prioridad > 3 and prioridad < 16 order by prioridad ASC");
while ($row = mysql_fetch_array($result)) {
echo '
<a href="cupon.php?'.encrypt($row['id'],$semilla).'">
<div class="ofertacargarindex">
<div class="ofertadescripcargar">
<div class="ofertadescripcargartitulo">
<label id="tituloferta" >' . $row["titulo_principal"] . '</label>
</div>
<div class="minidescripcionofertacargar">
<label id="minidescripcionoferta">' . $row["titulo_secundario"] . '</label>
</div>

</div>
<div class="ofertaimagencargar">
<div class="etiquetacargar">
<div class="etiquetapreciocargar">
%<label id="descuentoporcentaje">'.$row["descuento"].'</label>
</div>
</div>
<img src="./'.$row['foto'].'" />

</div>
<div class="precioscargar">
<div class="preciofertacargar">
Antes <label id="precio">'.$row["precio"].'</label>
</div>
<div class="ahoraofertacargar">
$<label id="preciocondesc">' .(($row['precio'])-($row["precio"]*$row['descuento']/100)) . '</label><div class="ahoraofertavercargar">Ver</div>
</div>
</div>
</div>
</a>
';
}
mysql_free_result($result)


?>


</div>
</div>
</div>
<div id="footer">

</div>

</body>
</html>

codigo de la pagina micuenta.php

<!DOCTYPE html>
<html>
<head> <link rel="stylesheet" href="estilo.css" type="text/css" />
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script type="text/javascript" src="./js/jquery.min.js"></script>
<link rel="stylesheet" href="jquery-ui-1.9.2.custom/css/ui-lightness/jquery-ui-1.9.2.custom.css" />
<script src="jquery-ui-1.9.2.custom/jquery-1.9.2.custom.js"></script>
<script src="jquery-ui-1.9.2.custom/development-bundle/ui/jquery-ui.custom.js"></script>
<script>

$(function() {
$( ".datepicker" ).datepicker({
autoSize: true,
dayNames: ['Domingo', 'Lunes', 'Martes', 'Mi�rcoles', 'Jueves', 'Viernes', 'S�bado'],
dayNamesMin: ['Dom', 'Lu', 'Ma', 'Mi', 'Je', 'Vi', 'Sa'],
firstDay: 1,
monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',' Julio','Agosto','Septiembre','Octubre','Noviembre' ,'Diciembre'],
monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','S ep','Oct','Nov','Dic'],
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true,
yearRange: "-90:+0"


});



});
</script>

</head>
<?php
session_start(); ?>
<body>
<div id="header">
<div id="hgroup">
<div style="position:relative;top:30px;right: 20px;float:right;">

<?php
session_start();
include_once "conexion.php";
if(isset($_SESSION['userid'])){
session_start();
echo '<form name="logoutform" method="post" >
Bienvenido usuario: '.$_SESSION['username'].'
<input type="submit" name="logout" id="logout" value="SALIR">
</form>';
}

if(isset($_POST['logout'])){
session_unset();
session_destroy();
header("location:index.php");
}
?>
</div>
  #4 (permalink)  
Antiguo 18/03/2013, 08:59
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago del estero
Mensajes: 18
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: problema con session entre paginas

<div style="float:left;">
<a href="./index.php"><img src="./images/logo/elsitio.png" style="height:96px;width: 160px;border:none;"/></a>
</div>
</div>
<ul id="menu-lavalamp">
<li><a href="./ofertadeldia.php">OFERTA DEL DIA</a></li>
<li><a href="./otrasofertas.php">OTRAS OFERTAS</a></li>
<li><a href="./comofunciona.php">COMO FUNCIONA</a></li>
<li><a href="./ofertascerradas.php">OFERTAS CERRADAS</a></li>
<li><a href="./loguin.php">ENTRAR</a></li>
<li><a href="./registrarse.php">REGISTRARSE</a></li>
<div id="conten-lava">
<div id="lavalamp"></div>
</div>
</ul>
</div>
<div id="contenido">
<form name="micuenta" action="micuenta.php" method="post" >
<br>
<div class="menuCuenta">
<a href="./micuenta.php" title="Mi Cuenta" class="left "><img style="width: 155px; height: 45px;" src="./images/botones/micuenta.jpg" alt="Mi Cuenta" border="0"></a>
<a href="./miscupones.php" title="Mis Cupones" class="left on"><img style="width: 184px; height: 45px;" src="./images/botones/miscupones.jpg" alt="Mis Cupones" border="0"></a>
<a href="./ayuda.php" title="Ayuda" class="left "><img style="width: 100px; height: 45px;" src="./images/botones/ayuda.jpg" alt="Ayuda" border="0"></a>
</div>
<div>
DATOS DE MI CUENTA:
</div>
<br>
<fieldset class="corto left">
<legend>Nombre y apellido <em></em></legend>
<input type="text" name="nombreyapellido" value="<?php echo ''.$_SESSION['username']; ?>" maxlength="30">
</fieldset>

<fieldset class="corto left">
<legend>Contraseña anterior<em></em></legend>
<input type="password" name="password" value="" maxlength="32">
</fieldset>

<fieldset class="corto left">
<legend>Nueva contraseña <em></em></legend>
<input type="password" name="newpassword" value="" maxlength="32">
</fieldset>

<fieldset class="corto left">
<legend>Telefono fijo <em></em></legend>
<input type="text" name="telefonofijo" value="<?php echo ''.$_SESSION['telfijo']; ?>" maxlength="18">
</fieldset>

<fieldset class="corto left">
<legend>Telefono celular <em></em></legend>
<input type="text" name="telefonocelular" value="<?php echo ''.$_SESSION['telcelu']; ?>" maxlength="18">
</fieldset>

<fieldset class="corto left">
<legend>Desea recibir periodicamente ofertas <em></em></legend>
<select name="aceptaoferta">
<option value="1">SI</option>
<option value="2">NO</option>
</select>
Por defecto "SI"
</fieldset>

<fieldset class="corto left">
<legend>Fecha de nacimiento <em></em></legend>
<input type="text" name="fechanacimiento" readonly="" value="<?php echo ''.$_SESSION['fechanacimiento']; ?>" class="datepicker" />
</fieldset>


<fieldset class="corto left">
<legend>Elija su ciudad o la mas cercana <em></em></legend>
<select name="ciudad">
<?php
$uid=$_SESSION['userid'];
$resultado_ciudad_anterior = mysql_query("SELECT ciudad_usuario_id FROM usuario where id = $uid");
while ($rowca = mysql_fetch_array($resultado_ciudad_anterior)) {
$ciudadanterior=$rowca['ciudad_usuario_id'];
}
mysql_free_result($resultado_ciudad_anterior);
$resultado_ciudad = mysql_query("SELECT nombre FROM ciudad where id = $ciudadanterior");
while ($row = mysql_fetch_array($resultado_ciudad)) {
echo '
<option value="' . $ciudadanterior . ' selected">' . $row["nombre"] . '</option>
';
}
mysql_free_result($resultado_ciudad);
$resultado_ciudadd = mysql_query("SELECT * FROM ciudad where id != $ciudadanterior");
while ($row = mysql_fetch_array($resultado_ciudadd)) {
echo '
<option value="' . $row["id"] . '">' . $row["nombre"] . '</option>
';
}
mysql_free_result($resultado_ciudadd);
?>

</select>
</fieldset>

<div class="actualizardatos">
<input type="submit" name="actualizar" value="Actualizar mis datos">
</div>

</form>

<?php
if(isset($_POST['actualizar'])){

$idus=$_SESSION['userid'];
$nombyape=$_POST['nombreyapellido'];
$newpass=md5(md5($_POST['newpassword']));
$peremail=$_POST['aceptaoferta'];
$fnac=$_POST['fechanacimiento'];
$ciudaduser=$_POST['ciudad'];
$tfijo=$_POST['telefonofijo'];
$tcelu=$_POST['telefonocelular'];
$passactual=$_SESSION['pass'];
if (md5(md5($_POST['password'])) != $passactual) {
echo 'DEBE INGRESAR SU CONTRASEÑA ACTUAL PARA PODER MODIFICAR SUS DATOS';
} else if (md5(md5($_POST['password'])) == $passactual) {
if ($_POST['newpassword'] != '') {
mysql_query("UPDATE usuario SET nombreyapellido = '$nombyape',permite_email = '$peremail',password = '$newpass',
fecha_nacimiento = '$fnac',ciudad_usuario_id = '$ciudaduser',telfijo = '$tfijo',telcelu = '$tcelu' WHERE id = '$idus';");

$_SESSION['pass'] = $newpass;
$_SESSION['username'] = $nombyape;
$_SESSION['permitemail'] = $peremail;
$_SESSION['fechanacimiento'] = $fnac;
$_SESSION['ciudad'] = $ciudaduser;
$_SESSION['telfijo'] = $tfijo;
$_SESSION['telcelu'] = $tcelu;

header("location:micuenta.php");

}
if ($_POST['newpassword'] == '') {
mysql_query("UPDATE usuario SET nombreyapellido = '$nombyape',permite_email = '$peremail',
fecha_nacimiento = '$fnac',ciudad_usuario_id = '$ciudaduser',telfijo = '$tfijo',telcelu = '$tcelu' WHERE id = '$idus';");

$_SESSION['username'] = $nombyape;
$_SESSION['permitemail'] = $peremail;
$_SESSION['fechanacimiento'] = $fnac;
$_SESSION['ciudad'] = $ciudaduser;
$_SESSION['telfijo'] = $tfijo;
$_SESSION['telcelu'] = $tcelu;

header("location:micuenta.php");
}

}
}
?>
</div>
<div id="footer">

</div>


</body>
</html>


el problema q tengo es que no me mantiene la varible de sesion entre estas dos paginas, solo me muestra el nombre del usuario cuando hacer un loguin correcto y me aparece las opciones de ir a mi cuenta y salir.

Espero que alguien me pueda solucionar el tema q hace varios dias que nose que hacer
  #5 (permalink)  
Antiguo 18/03/2013, 09:06
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago del estero
Mensajes: 18
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: problema con session entre paginas

PERDON POR POSTEAR ASI pero el tema es que no me permitiar postear mas de 10000 caractes y les queria poner todo el codigo asi me entiendan
  #6 (permalink)  
Antiguo 18/03/2013, 09:50
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: problema con session entre paginas

Hola,
Para empezar empieza por organizar tu codigo, trata de hacer un archivo donde tengas tus funciones php y clasificar tu codigo de manera que los archivos sean mas limpios..
luego session_start() unicamente debes utilizarlo una vez, se recomienda colocarlo al inicio del script php, y honestamente no entiendo tu codigo por lo que esta bien difícil ayudarte si pudieras ser mas específico en que parte del código tenes dudas seria mucho mas fácil ayudarte a identificar problemas..

Creería y eso lo digo suponiendo que tu problema es que dices que a veces si te muestra la sesion y a veces no???... si es asi me imagino que es un error como tienes estructurado tu codigo, como te dije muchas veces el desorden es tal que "pensamos bien las cosas pero no las hacemos bien" por lo que te recomendaría que analices tu codigo y veas si sigue el proceso lógico que se supone debe realizar....
  #7 (permalink)  
Antiguo 18/03/2013, 10:16
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: problema con session entre paginas

Si tienes iniciaste sesion en el Login y en la pagina siguiente pusistes al inicio del código, antes del html el session_start(); debería funcionar...

comprueba en las siguientes páginas que existan las sessiones

if(isset($_SESSION['nombre de la sesion'])){
echo $_SESSION['nombre de la sesion'];
}else{
echo "No existe la sesion";

}

por el resto, es imposible leer tu codigo... no sabemos cuando empieza ni termina, en todo caso subes los archivos al FTP y nos pasas el link o algo asi comprimido..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: formulario, html, mysql, select, session, sql
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 07:05.