Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/08/2008, 17:22
Avatar de goroscer
goroscer
 
Fecha de Ingreso: mayo-2008
Mensajes: 75
Antigüedad: 16 años, 6 meses
Puntos: 0
Sesiones con ajax y php

hola a todos!!, estoy tratando de usar ajax y php para un modulo de login. Mi intencion es cuando el usuario ingrese al sistema ingrese su usuario y su contraseña, el sistema a traves del objeto XMLHttpRequest llame a un archivo php

Cita:
var pos_url ='includes/login.php';
var usuario=document.formlogueo.usuario.value;
var clave=document.formlogueo.clave.value;
var req = new XMLHttpRequest();
if (req)
{
req.onreadystatechange = function()
{
if (req.readyState == 4 && (req.status == 200 || req.status == 304))
{
if (req.responseText==1)
{
location.href='../index2.php'; // ingreso al sistema
}
else
{
alert(req.responseText);
}
}
}
req.open('POST', pos_url,true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send('usuario='+usuario+'&clave='+clave);
}
}

// aqui va el formulario
Este archivo php verificara la existencia del usuario y creara una session mediante session_start(). En este archivo php, si no existe el usuario me da un mensaje de "usuario incorrecto" o "contraseña incorrecta " y si existe ingresa al sistema. Copio algo del codigo php:

archivo login.php

Código PHP:
if (isset($_POST['cod_asig']) && isset($_POST['clave']) && isset($_POST['dni_doc'])) // chequeamos si se definieron cod_asig y clave a travez de un formulario
{
// conectamos base de datos
// verificamos si existe el usuario 
// si no existe el usuario hacemos un echo "usuario incorrecto" o "contraseña incorrecta" en su defecto.
// luego, si existe el usuario, hacemos query y lo dejamos en $tabla y luego creamos la session
session_name('session_usuarios'); // Lee y/o cambia el nombre de la sesión actual
session_start(); // Iniciamos session
session_cache_limiter('nocache,private'); // indicamos al navegador que no cache esta pagina 
// si llego hasta aqui, significa que todo marcha bien, por lo tanto defino
$_SESSION['usuario']=$tabla['usuario']
$_SESSION['clave']=$tabla['clave'];
$_SESSION['nivel']=$tabla[nivel];
exit;

bien esto esta funcionando!, el tema es que el sistema restringe el acceso de acuerdo al nivel del usuario (en $tabla['nivel']). Cuando accedo a una pagina donde el usuario no tiene acceso me sale el siguiente error

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\archivos de programa\easyphp1-7\www\layouts\menuprincipal.php:83) in c:\archivos de programa\easyphp1-7\www\modulos\altasdealumnos.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\archivos de programa\easyphp1-7\www\layouts\menuprincipal.php:83) in c:\archivos de programa\easyphp1-7\www\modulos\altasdealumnos.php on line 3

sin embargo por las pruebas que hice, crea la session. Me gustaria si alguien puede indicarme cual es mi error. Estuve buscando informacion y me encontre que cuando creo sesiones no debe haber ningun echo ni codigo html ni nada
Para aclarar mas el tema, pongo lo siguiente en cada pagina para validar la session

Código PHP:
<?php 
session_name
('session_usuarios');
session_start(); // Iniciamos session
$nivel_acceso=1;
if (isset(
$_SESSION['nivel']))
    {
      if (
$nivel_acceso<=$_SESSION['nivel'])
       { 
       
//include("modulos/mensajelogeo.php");
       
exit;
       }
    }
    else
    {
    echo 
"no existe session";
    }
?>

// sigue el  codigo html
Bueno, desde ya gracias por su colaboracion. Saludos