Foros del Web » Programando para Internet » PHP »

problema con sesión php

Estas en el tema de problema con sesión php en el foro de PHP en Foros del Web. hola a todos tengo un pequeño pero a la vez gran problema, veréis tengo mi pagina funcionando en modo local y todo iba bien hasta ...
  #1 (permalink)  
Antiguo 25/01/2012, 11:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
problema con sesión php

hola a todos tengo un pequeño pero a la vez gran problema, veréis tengo mi pagina funcionando en modo local y todo iba bien hasta que la monte en un servidor ahí me di cuenta de que tal como tengo mi forma de iniciar y mantener sesión esta mal, y no se con mis conocimientos como puedo solucionarlo haber si alguien me aporta alguna idea, tengo el siguiente código:

lo mitico, un formulario en el q el usuario introduce su nombre de usuario y contraseña y lo envio a otra pagina en la q hago la validación, para este propósito use jquery para enviar datos de forma asíncrona tal que así:

Código Javascript:
Ver original
  1. $("#login_form").submit(function(event){
  2.                             event.preventDefault();
  3.  
  4.                             $.ajax({
  5.                                 type: "POST",
  6.                                 url: "login.php",
  7.                                 data: $("#login_form").serialize(),
  8.                                 dataType: 'json',
  9.                                 success: function(data){
  10.                                     if(data===false){
  11.                                         alert("datos incorrectos");
  12.                                     }else{
  13.                                        
  14.                                         $("#olvido").css({'display':'none'}); // una vez logueado desaparece "olvidaste tu contrseña"
  15.                                         $("#login").css({'display':'none'});
  16.                                         window.location.href = ".";
  17.                                     }  
  18.                                 }
  19.                             });
  20.                         });
  21.                        
  22.                         </script>

y el codigo de login es este:

Código PHP:
Ver original
  1. <?php
  2. session_start(); // mantenemos la sesion activa para trabajar siempre con el usuario registrado
  3. //$_SESSION['usu']; // guardamos la sesion del usuario
  4.  
  5. include("conectarse.php");
  6.     //cargamos en usuario y password el nombre de usuario y contraseña recogidos en el formulario de logeo
  7. $usuario = $_POST['username'];
  8. $password = $_POST['userpass'];
  9.     //echo($usuario);
  10.     //echo($password);
  11.    
  12.  
  13. $query = "SELECT pass FROM miembros WHERE usu ='".$usuario."'";
  14. $link=Conectarse();
  15. $result=mysql_query($query,$link);
  16. if($fila = mysql_fetch_array($result)) {
  17.     //echo $row["pass"];
  18.  
  19.     if($fila["pass"] == $password){
  20.         $_SESSION['actual'] = $usuario;
  21.         $salida = true;
  22.        
  23.        
  24.     }
  25.     else{
  26.         $salida = false;
  27.        
  28.     }
  29.  
  30. }
  31. else{
  32.         $salida = false;
  33. }
  34.  
  35. echo json_encode($salida);
  36.  
  37. mysql_free_result($result); // liberamos la memoria consumida
  38. mysql_close($link); // cerramos conexion
  39.  
  40. ?>
tal como lo tengo hasta ahora lo q hacia es en cada pagina php nueva ponía un session_start() y comprobaba kien era el usuario registrado en cada momento de esta manera:

Código PHP:
Ver original
  1. <?php
  2.    
  3.     $usuarioactual = $_SESSION['actual'];
  4.     ?>

y luego ya a partir de aquí lo q hacia es comprobar el valor de usuario actual, si se corresponde al admin pues muestra una serie de funciones sino no:

ahora mi pregunta es, session_start solo debería de ponerla en el index.php y luego en login comprobar si un usuario esta en el sistema, una vez se logra, utilizar session_id pero no se como puedo enviarle devuelta los dígitos que genera session id para cada usuario y que se mantenga en las diferentes paginas


alguien puede decirme si estoy en lo cierto o si se hace de otra manera?


gracias
  #2 (permalink)  
Antiguo 25/01/2012, 13:09
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: problema con sesión php

Hola,

No hace falta complicarse con los session id. Podés usar algo así en todas las páginas, haciendo un archivo con este código e incluyéndolo al principio de todas las páginas:

Código PHP:
<?php
//asegurate que no haya salidas al navegador antes de incluir el archivo

include("conectarse.php");
$link=Conectarse(); 

@
session_start();
$usuarioactual $_SESSION['actual'];

$logueado=true;

if(!
$usuarioactual$logueado=false;

$result=mysql_query("SELECT * FROM miembros WHERE usu ='".$usuario."'",$link);
$datos_usuarioactual=mysql_fetch_array($result); //por si lo necesitas
if(!$datos_usuarioactual$logueado=false;

if(!
$logueado) {
  
header('Location: login.php');
  die();
}

?>
Recordá incluir un logout que haga un session_destroy(), o por lo menos unset($_SESSION['actual']).

Saludos.
  #3 (permalink)  
Antiguo 26/01/2012, 05:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: problema con sesión php

gracias por tu solución pero creo q no me explike bien, veras, yo tengo un índex.php que contiene una cabecera y un footer q no cambian, y el resto de paginas se carga en un un div que se llama contenido en el q se cargan las diferentes paginas, según me comentaron, no me hace falta poner session_start en todas las paginas, sino q con ponerlo en el índex luego la variable de session ya tiene q kedar para todas las demás paginas
  #4 (permalink)  
Antiguo 26/01/2012, 10:58
Avatar de totobycrg  
Fecha de Ingreso: enero-2012
Ubicación: México D.F.
Mensajes: 27
Antigüedad: 12 años, 3 meses
Puntos: 5
Respuesta: problema con sesión php

Si, con que se encuentre en el Index.php es más que suficiente =)
  #5 (permalink)  
Antiguo 26/01/2012, 12:35
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: problema con sesión php

solucionado era un problema en la configuracion de mi php.ini, pero ahora tengo otro problema

como puedo poner una ruta relativa en php esq tengo este código y al quitarle el nombre de una carpeta xq yo la llamo de una forma pero luego donde coloque la pagina pues no es cosa mía ponerle el nombre entonces lo q hago es esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. require("class.image-resize.php");
  4. include("conectarse.php");
  5. $link = conectarse();
  6.  
  7.  
  8.  
  9. $nombre = $_POST['colab'];
  10. $url = $_POST['urlcolab'];
  11.  
  12. if (!empty($_FILES)) {
  13.     $tempFile = $_FILES['imgcolab']['tmp_name'];
  14.    
  15.     $obj = new img_opt();
  16.     $obj->max_width(200);
  17.     $obj->max_height(200);
  18.     $obj->image_path($tempFile);
  19.     $obj->image_resize();
  20.    
  21.     //$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
  22.     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . './img/logosColab/';
  23.     $targetFile =  str_replace('//','/',$targetPath) . $_FILES['imgcolab']['name'];
  24.     echo($targetFile);
  25.     exit;
  26.         if(move_uploaded_file($tempFile,$targetFile)){
  27.             //$logo = $_FILES['imgcolab']['name']; // GUARDO LA DIRECCION DEL ARCHIVO PARA TENER LA REFERENCIA EN LA BD
  28.             $logo = $_FILES['imgcolab']['name'];
  29.             $sql = "INSERT INTO colaboraciones (nombre,url,logo)";
  30.             $sql=$sql.'VALUES ("'.$nombre.'","'.$url.'","'.$logo.'")';
  31.             mysql_query($sql,$link);
  32.             ?>
  33.             <script>
  34.             alert("datos enviados correctamente");
  35.             document.location.href = "index.php"
  36.             </script>
  37.             <?php
  38.         }
  39.         else{
  40.             ?>
  41.             <script>
  42.             alert("error al guardar los datos en la BD");
  43.             document.location.href = "index.php"
  44.             </script>
  45.             <?php
  46.         }
  47.            
  48.         //echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
  49.         ?> <script>document.location.href = "index.php"</script> <?php
  50.    
  51. }
  52. ?>

el problema radica aqui: ./img/logosColab/, si la pongo así no funciona, pero si lo pongo así si:
PFC/img/logosColab/

como podría poner la ruta relativa?

Etiquetas: formulario, mysql, sesión, sql, usuarios
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 15:25.