Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: mastercss en 20 Marzo 2013, 21:27 pm



Título: [Ayuda] Problemas con sesiones.
Publicado por: mastercss en 20 Marzo 2013, 21:27 pm
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
  1. <?php
  2.  
  3. if(isset($_SESSION['user'])){
  4. header("Location: profesionales.php");
  5. }
  6.  
  7. if($_POST){
  8. extract($_POST);
  9. include_once("includes/class.sql.php");
  10. include_once("includes/config.inc.php");
  11. include_once("includes/funciones.php");
  12.  
  13. $user=limpiar($user);
  14. $password=sha1($pass);
  15.  
  16. $sql=new sql($ip, $usuario, $pass, $db);
  17.  
  18. $respuesta=$sql->consultar("select * from usuarios where usuario='$user';");
  19.  
  20. if(!empty($respuesta)){
  21. if($user==$respuesta[0]['usuario'] && $password==$respuesta[0]['password']){
  22. $_SESSION['id']=$respuesta[0]['id'];
  23. $_SESSION['user']=$user;
  24. $_SESSION['pass']=$password;
  25. $_SESSION['auth_level']=$respuesta[0]['lvl_auth'];
  26.                        // Si aqui imprimo las variables de session recien creadas se muestran correctamente.
  27. echo "<script>location.href='profesionales.php'</script>";
  28. }else{
  29. echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
  30. echo "<script>location.href='index.php?p=login'</script>";
  31. }
  32. }else{
  33. echo "<script>alert('El usuario introducido o la contrase\u00f1a no son correctos');</script>";
  34. echo "<script>location.href='index.php?p=login'</script>";
  35. }
  36.  
  37.  
  38. }else{
  39. ?>
  40. <br />
  41. <div id="acceso">
  42. <form method="post" action="login.php">
  43. Usuario<br />
  44. <input type="text" name="user" /><br />
  45. Password<br />
  46. <input type="password" name="pass" /><br /><br />
  47. <p align="center"><input type="submit" value="Entrar" class="button"></p>
  48. </form>
  49. </div>
  50.  
  51. <?php
  52. }
  53. ?>

profesionales.php

Código
  1. <?php
  2.  
  3. session_start(); //En la primera linea declaro el session_start()
  4.  
  5. include_once("includes/config.inc.php");
  6. include_once("includes/class.sql.php");
  7. include_once("includes/funciones.php");
  8.  
  9. $sql=new sql($ip, $usuario, $pass, $db);
  10.  
  11. $respuesta=$sql->consultar("SELECT * FROM presupuestos_usuarios");
  12.  
  13. $sql->cerrar();
  14.  
  15. unset($sql);
  16.  
  17. if(!isset($_SESSION['user'])){
  18. header("Location: login.php"); //Aqui al no detectar la sesion me redirige al login de nuevo.
  19. }else{
  20. ?>
  21. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  22. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es">
  23. <head>
  24. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  25. <meta http-equiv="content-language" content="es_ES" />
  26. <meta charset="utf-8" /> <!-- Tipo de Codificación -->
  27. <title>Reformas y presupuestos</title>
  28. <style type="text/css">
  29. @import "css/profesionales.css";
  30. </style>
  31. </head>
  32. <body>
  33. <script src="js/jquery-1.8.3.js" type="text/javascript"></script>
  34. <script src="js/jquery.validate.js" type="text/javascript"></script>
  35. <script src="js/jquery.imagecube.js" type="text/javascript"></script>
  36. <script src="js/resizeLib.js" type="text/javascript" ></script>
  37. <script src="js/ajax.js" type="text/javascript" ></script>
  38. <script src="ckeditor/ckeditor.js" type="text/javascript" ></script>
  39. <script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
  40. <script>
  41.  
  42. jQuery(document).ready(function(){
  43. $(".filtro").bind('keypress', function(e) {
  44. if(e.keyCode==13){
  45. var n_parametros=0;
  46. var filtro="";
  47. if($("#comunidad").val() !=""){
  48. n_parametros++;
  49. if(n_parametros > 1){
  50. filtro +="&"+$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
  51. }else{
  52. filtro +=$("#comunidad")[0].id+"="+$("#comunidad")[0].value;
  53. }
  54. }
  55.  
  56. if($("#localidad").val() !=""){
  57. n_parametros++;
  58. if(n_parametros > 1){
  59. filtro +="&"+$("#localidad")[0].id+"="+$("#localidad")[0].value;
  60. }else{
  61. filtro +=$("#localidad")[0].id+"="+$("#localidad")[0].value;
  62. }
  63. }
  64.  
  65. if($("#categoria").val() !=""){
  66. n_parametros++;
  67. if(n_parametros > 1){
  68. filtro +="&"+$("#categoria")[0].id+"="+$("#categoria")[0].value;
  69. }else{
  70. filtro +=$("#categoria")[0].id+"="+$("#categoria")[0].value;
  71. }
  72. }
  73.  
  74.  
  75. var respuesta = ajax("presupuestos_usuarios.php?"+filtro, "","GET");
  76. $("#principal").html(respuesta);
  77. }
  78. });
  79.  
  80. var respuesta_inicial=ajax("presupuestos_usuarios.php","","GET");
  81. $("#principal").html(respuesta_inicial);
  82. });
  83.  
  84. function ver(id_pre){
  85. var respuesta=ajax("ver_presupuesto.php?id="+id_pre,"","GET");
  86. $("#cuerpo").html(respuesta);
  87. }
  88.  
  89. function enviar(id_pre){
  90. var respuesta=ajax("dar_presupuesto.php?","id="+id_pre,"POST");
  91. $("#cuerpo").html(respuesta);
  92. }
  93.  
  94. </script>
  95. <div id="menu">
  96. <div id="logo">
  97. <a href="http://127.0.0.1/orocar/"><img src="images/logo.png" style="width: 100%; height: 100%" /></a>
  98. </div>
  99. <div id="menu-principal">
  100. <ul>
  101. <li type="disc" id="logout"><a href="index.php?p=logout">Cerrar Sesion</a></li>
  102. <li type="disc" id="presupuestos"><a href="profesionales.php">Presupuestos de Usuarios</a></li>
  103. <li type="disc" id="perfil"><a href="index.php?p=inicio">Inicio</a></li>
  104. </ul>
  105. </div>
  106. <div class="limpiar"></div>
  107. </div>
  108. <div id="cabecera">
  109. <div id="cabecera-content">
  110. <h1 id="titulo_pagina">Presupuestos recibidos</h1>
  111. </div>
  112. </div>
  113. <div id="cuerpo">
  114. <h2>Presupuestos solicitados por los usuarios</h2><br />
  115. <div style="width: 33.3%; float: left;">
  116. <label>Comunidad Autonoma</label><br /><br />
  117. <input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="comunidad">
  118. </div>
  119. <div style="width: 33.3%; float: left; ">
  120. <label>Categoria</label><br /><br />
  121. <input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="categoria">
  122. </div>
  123. <div style="width: 33.3%; float: left; ">
  124. <label>Localidad</label><br /><br />
  125. <input type="text" style="width: 50%; height: 4%; font-size: 14px;" class="filtro" id="localidad">
  126. </div>
  127. <div class="limpiar"></div>
  128. <div id="principal">
  129.  
  130. </div>
  131. </div>
  132. <div id="pie">
  133.  
  134. </div>
  135. </body>
  136. </html>
  137.  
  138. <?php
  139. }
  140. ?>


Título: Re: [Ayuda] Problemas con sesiones.
Publicado por: tecasoft en 20 Marzo 2013, 21:49 pm
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


Título: Re: [Ayuda] Problemas con sesiones.
Publicado por: mastercss en 20 Marzo 2013, 22:05 pm
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.


Título: Re: [Ayuda] Problemas con sesiones.
Publicado por: tecasoft en 20 Marzo 2013, 22:43 pm
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


Título: Re: [Ayuda] Problemas con sesiones.
Publicado por: mastercss en 21 Marzo 2013, 03:52 am
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
  1. <?php
  2. session_register('usuario');
  3. $_SESSION['usuario']="Hola caracola";
  4. ?>

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.


Título: Re: [Ayuda] Problemas con sesiones.
Publicado por: tecasoft en 21 Marzo 2013, 20:30 pm
pues eso no lo sabia yo, gracias a ti