[Ayuda] Problemas con sesiones.

Iniciado por mastercss, 20 Marzo 2013, 21:27 PM

0 Miembros y 3 Visitantes están viendo este tema.

mastercss

MI problema es el siguiente. No he cambiado absolutamente ningun trozo de de codigo de mi web, pero sin saber porque, la sesion o mejor dicho las variables de sesion no se guardan entre paginas.

Estoy desesperado la verdad.

Todo empieza con el archivo de login, que comprueba con la base de datos el usuario y la contraseña y en el caso de que sea correcto entonces crea cuatro variables de sesion, con los datos de ese usuario y redirige a profesionales.php. En profesionales compruebo la existencia de la variable de sesion usuario y si existe imprimo el codigo html y sino redirijo de nuevo a login.php.

Os pongo los codigos.

Login.php

Código (php) [Seleccionar]
<?php
session_start
();

if(isset(
$_SESSION['user'])){
header("Location: profesionales.php");
}

if(
$_POST){
extract($_POST);
include_once("includes/class.sql.php");
include_once("includes/config.inc.php");
include_once("includes/funciones.php");

$user=limpiar($user);
$password=sha1($pass);

$sql=new sql($ip$usuario$pass$db);

$respuesta=$sql->consultar("select * from usuarios where usuario='$user';");

if(!empty($respuesta)){
if($user==$respuesta[0]['usuario'] && $password==$respuesta[0]['password']){
$_SESSION['id']=$respuesta[0]['id'];
$_SESSION['user']=$user;
$_SESSION['pass']=$password;
$_SESSION['auth_level']=$respuesta[0]['lvl_auth'];
                        
// Si aqui imprimo las variables de session recien creadas se muestran correctamente.
echo "<script>location.href='profesionales.php'</script>";
}else{
echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
echo "<script>location.href='index.php?p=login'</script>";
}
}else{
echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
echo "<script>location.href='index.php?p=login'</script>";
}


}else{
?>

<br />
<div id="acceso">
<form method="post" action="login.php">
Usuario<br />
<input type="text" name="user" /><br />
Password<br />
<input type="password" name="pass" /><br /><br />
<p align="center"><input type="submit" value="Entrar" class="button"></p>
</form>
</div>

<?php
}
?>


profesionales.php

Código (php) [Seleccionar]
<?php

session_start(); //En la primera linea declaro el session_start()

include_once("includes/config.inc.php");
include_once("includes/class.sql.php");
include_once("includes/funciones.php");

$sql=new sql($ip$usuario$pass$db);

$respuesta=$sql->consultar("SELECT * FROM presupuestos_usuarios");

$sql->cerrar();

unset($sql);

if(!isset($_SESSION['user'])){
header("Location: login.php"); //Aqui al no detectar la sesion me redirige al login de nuevo.
}else{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="es_ES" />
<meta charset="utf-8" /> <!-- Tipo de Codificación -->
<title>Reformas y presupuestos</title>
<style type="text/css">
@import "css/profesionales.css";
</style>
</head>
<body>
<script src="js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script src="js/jquery.imagecube.js" type="text/javascript"></script>
<script src="js/resizeLib.js" type="text/javascript" ></script>
<script src="js/ajax.js" type="text/javascript" ></script>
<script src="ckeditor/ckeditor.js" type="text/javascript" ></script>
<script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script>

jQuery(document).ready(function(){
$(".filtro").bind('keypress', function(e) {
if(e.keyCode==13){
var n_parametros=0;
var filtro="";
if($("#comunidad").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
}else{
filtro +=$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
}
}

if($("#localidad").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#localidad")[0].id+"="+$("#localidad")[0].value;
}else{
filtro +=$("#localidad")[0].id+"="+$("#localidad")[0].value;
}
}

if($("#categoria").val() !=""){
n_parametros++;
if(n_parametros > 1){
filtro +="&"+$("#categoria")[0].id+"="+$("#categoria")[0].value;
}else{
filtro +=$("#categoria")[0].id+"="+$("#categoria")[0].value;
}
}


var respuesta = ajax("presupuestos_usuarios.php?"+filtro, "","GET");
$("#principal").html(respuesta);
}
});

var respuesta_inicial=ajax("presupuestos_usuarios.php","","GET");
$("#principal").html(respuesta_inicial);
});

function ver(id_pre){
var respuesta=ajax("ver_presupuesto.php?id="+id_pre,"","GET");
$("#cuerpo").html(respuesta);
}

function enviar(id_pre){
var respuesta=ajax("dar_presupuesto.php?","id="+id_pre,"POST");
$("#cuerpo").html(respuesta);
}

</script>
<div id="menu">
<div id="logo">
<a href="http://127.0.0.1/orocar/"><img src="images/logo.png" style="width: 100%; height: 100%" /></a>
</div>
<div id="menu-principal">
<ul>
<li type="disc" id="logout"><a href="index.php?p=logout">Cerrar Sesion</a></li>
<li type="disc" id="presupuestos"><a href="profesionales.php">Presupuestos de Usuarios</a></li>
<li type="disc" id="perfil"><a href="index.php?p=inicio">Inicio</a></li>
</ul>
</div>
<div class="limpiar"></div>
</div>
<div id="cabecera">
<div id="cabecera-content">
<h1 id="titulo_pagina">Presupuestos recibidos</h1>
</div>
</div>
<div id="cuerpo">
<h2>Presupuestos solicitados por los usuarios</h2><br />
<div style="width: 33.3%; float: left;">
<label>Comunidad Autonoma</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="comunidad">
</div>
<div style="width: 33.3%; float: left; ">
<label>Categoria</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="categoria">
</div>
<div style="width: 33.3%; float: left; ">
<label>Localidad</label><br /><br />
<input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="localidad">
</div>
<div class="limpiar"></div>
<div id="principal">

</div>
</div>
<div id="pie">

</div>
</body>
</html>

<?php
}
?>

tecasoft

yo veo en el archivo profesionales.php esta linea nose: <a href="http://127.0.0.1/orocar/

ademas mira haber si es el php.ini si guarda las session.cookie en el sitio , es decir si esta correctamente, ves x pasos, si dices que el codigo no lo has tocado piensa haber xk es, no te puedo ayudar mucho mas aya, lo siento
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

mastercss

Desgraciadamente se programar en php y javascript pero no tengo ni idea de como mirar lo del php.ini. Si me indicas un poco el como estaria agradecido.

tecasoft

#3
x defecto te deberia de dejar, dices que en tu pc te funciona? y en el hosting de linux no te funciona? pos contacta con tu proveedor de hosting y que te digan que pasa con el php.ini o modificalo desde tu panel de control pero recuerda hacer copias de seguridad
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

mastercss

Bueno por algun extraño motivo he conseguido solucionar el problema. No he tenido que mirar el php.ini ni mucho menos, simplemente parece que el "XAMPP" viene con una version 5.4 de php y me obliga a utilizar la directiva session_register(). Para solucionarlo solo hice esto:

Código (php) [Seleccionar]

<?php
session_start
();
session_register('usuario');
$_SESSION['usuario']="Hola caracola";
?>


Por lo que he leido en la documentación de PHP es una funcion que va a desaparecer de PHP y aun asi en ese caso, estnado en un php 5.4 no deberia de tener problemas con declarar las variables de sesion sin esta funcion. Si alguien lo utiliza porque le pase lo mismo que sepa que asi tal cual la linea de session_register('usuario') da un error de "deprecated" o en via de desaparicion. Para solucionarlo basta con poner un "@" delante, es decir, @session_register('usuario').

Muchas gracias por la ayuda.

tecasoft

pues eso no lo sabia yo, gracias a ti
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits