Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/07/2007, 12:54
El_fenix
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: session_ PHP y ajax

Hola gvargas
Te quiero molestar con lo siguiente (o aotro que lea el post)
Cita:
<?php
include("registro/conecta.php");
include("registro/verifica.php");
?>

<html>

<head>
<script type="text/javascript" src="js/prototype.js" language="JavaScript"></script>
<script type="text/javascript" src="js/estandar.js" language="JavaScript"></script>
</head>

<body>
<div id = "capa">
<?php
$usuario = $_SESSION['ussuario'];
$nombre = $_SESSION['usu_nombres'];
$cargo = $_SESSION['usu_cargo'];

echo "usuario =".$usuario;
echo "<br />";
echo "nombre =".$nombre;
echo "<br />";
echo "cargo =".$cargo;
echo "<br />";
?>
<input type = "button" id = "btn" value = "Presione aqui">
<input type = "button" id = "btn2" value = "Presione aqui">
<input type = "hidden" id = "usuario" value = "<?php echo $usuario; ?>">
</div>
</body>
</html>
Las dos primeras lineas verifican si el usuario existe en la BD y crea la sesion, esta en el codigo de verifica mas abajo (por si a alguien le sirve)

Asi envio actualizo la pagina
Cita:
mostrar2 = function(){
var usuario = $('usuario').value;
var parametro = 'usuario=' + usuario;
alert(parametro);
new Ajax.Updater('capa', 'capa.php', {method: 'post', parameters: parametro});
}
Cita:
<?php
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
if (!isset($_POST['usuario'])){
// Si estan vacias las variables destuimos la sesion y direccionamos al inicio
session_destroy();
die (header ("Location: index.php"));
}
?>

<?php
$usuario = $_POST['usuario'];
$nombre = $_SESSION['usu_nombres'];
$cargo = $_SESSION['usu_cargo'];

echo "usuario =".$usuario;
echo "<br />";
echo "nombre =".$nombre;
echo "<br />";
echo "cargo =".$cargo;
echo "<br />";
?>
<input type = "button" id = "btn3" value = "Presione aqui" onclick = "mostrar3();">
Este archivo es el que mnuestra con Ajax.Updater recibo el valor de usuario de la sesion. entra de acuerdo a la verificacion, pero.....
Mi duda es por que no activa las demas variables de sesion, solo me imprime el usuario, que es enviado como parametro desde la capa superior.



Verifica.php (modificacion del codigo publicado por Cluster, guru de PHP)
Cita:
<?php
//include("registro/conecta.php");

$usuario = $_POST['usuario'];
$clave = $_POST['clave'];//md5($_POST['pass']);

// chequea pagina que llama al script, para devolver errores
$url = explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;

if (isset($_POST['usuario']) && isset($_POST['clave'])) {

// Conexión base de datos. si no lo logra devuelve error 0
$enlace = conectar();
if(!($enlace)) die(header ("Location: $redir?error_login=0"));

// realizamos la consulta a la BD para chequear datos del Usuario.
$sql = "SELECT vol_rut, car_id, per_id, ofi_usuario, ofi_clave FROM oficial WHERE ofi_usuario = '$usuario'";
$consulta = consultar($sql);
//si existe un error en la consulta vuelve al inicio indicando el error
if(!($consulta)) die(header ("Location: $redir?error_login=1"));

if (mysql_num_rows($consulta) != 0) {
// almacenamos datos del Usuario en un array para empezar a chequear.
$datos_usu = mysql_fetch_array($consulta);

// si la clave no coincide
// salimos del script con error 3 y redireccinamos hacia la página de acceso
if ($clave != $datos_usu['ofi_clave']) {
Header ("Location: $redir?error_login=3");
exit;
}

$rut = $datos_usu['vol_rut'];
$cargo = $datos_usu['car_id'];
$perfil = $datos_usu['per_id'];

mysql_free_result($consulta);
//obtenemos los privilegios de usuario
$sql = "SELECT C.car_nombre, P.per_privilegios, V.vol_nombres, V.vol_ape_paterno, V.vol_ape_materno FROM cargo C, perfil_de_usuario P, voluntario V WHERE C.car_id = '$cargo' AND P.per_id = '$perfil' AND V.vol_rut = '$rut'";
$consulta = consultar($sql);

if(!($consulta)) die(header ("Location: $redir?error_login=1"));
$datos = mysql_fetch_array($consulta);

desconectar($enlace);

// le damos un mobre a la sesion.
session_name("SAGO");
// inciamos sesion
session_start();

//decimos al navegador que no guarde esta página en la cache
session_cache_limiter('nocache,private');

// cargamos los datos del usuarios en las variables de sesion
$_SESSION['usu_rut'] = $datos_usu['vol_rut'];
$_SESSION['usu_idcargo'] = $datos_usu['car_id'];
$_SESSION['ussuario'] = $datos_usu['ofi_usuario'];
$_SESSION['usu_nombres'] = $datos['vol_nombres'];
$_SESSION['usu_paterno'] = $datos['vol_ape_paterno'];
$_SESSION['usu_materno'] = $datos['vol_ape_materno'];
$_SESSION['usu_privilegios'] = $datos['per_privilegios'];
$_SESSION['usu_cargo'] = $datos['car_nombre'];

unset($usuario);
unset ($clave);
}
else {
// si no esta el nombre de usuario en la BD o el password ..
// se devuelve con error 2
Header ("Location: $redir?error_login=2");
exit;
}
}
else {
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
if (!isset($_SESSION['ussuario'])){
// Si estan vacias las variables destuimos la sesion y direccionamos al inicio
session_destroy();

die (header ("Location: index.php"));
}
}
?>
Reiterando, la duda esta en por que no activa las variables de sesion el segundo codigo si inicia sesion con session_start()

Sera porque la capa superior ya tiene iniciadas las variables???


Ahi me perdi.


Ojala se entienda mi consulta

Cualquier ayuda estoy por aca.

Agradecido de todos modos

Chauz