Foros del Web » Programando para Internet » PHP »

Problema con las sesiones.

Estas en el tema de Problema con las sesiones. en el foro de PHP en Foros del Web. Buenas Tardes a todos. Tengo un problema al momento de crear una sesión en php, estoy trabajando con el patron de desarrollo Modelo Vista controlador ...
  #1 (permalink)  
Antiguo 11/01/2012, 14:11
 
Fecha de Ingreso: enero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Problema con las sesiones.

Buenas Tardes a todos. Tengo un problema al momento de crear una sesión en php, estoy trabajando con el patron de desarrollo Modelo Vista controlador y DB Oracle.

El codigo del controlador es el siguiente:

<?php
//Se incluye el modelo
session_start();
require '../Modelo/sicc_acc_modl.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!empty ($_POST['usuario']) && (!empty ($_POST['clave'])) )
{
$ACCESO = fx_acc_usr($_POST['usuario'], $_POST['clave']);
if ($ACCESO==false)
{
print ("Intentelo de Nuevo");
}else{
fx_upd_usr ($_POST['usuario']);
$row = fx_dat_pers ($ACCESO);

// Declaracion de Variables
$_SESSION['usuario'] = $ACCESO;
echo "Este Retorna la Cedula de la Variable Acceso: ".$_SESSION['usuario'].<br/>";

// De aqui para abajo no me imprime ninguna variable de session por pantalla debido a que la funcion fx_dat_pers devuelve un arreglo y ese arreglo contiene el nombre , cedula, y Correo.

$_SESSION['nombre'] = $row ['NB_PERS'];
echo "Este es el Usuario: ".$_SESSION['nombre']."<br />";
$_SESSION['cedula'] = $row ['NU_DOCM_IDNT'];
echo "Este es la Cedula: ".$_SESSION['cedula']."<br />";
$_SESSION['correo'] = $row ['TX_DIR_EMAIL'];
echo "Este es el Correo: ".$_SESSION['correo']."<br />";

}
}
}

//Ahora se incluye la vista
require '../Vista/sicc_login_vista.php';
?>


El Siguiente codigo es del Modelo

<?php

function fx_acc_usr ( $usuario , $clave )
{
include ('sicc_acc_con.php');
if (!empty ($usuario)&& !empty ($clave))
{
$query = "SELECT CO_USR_RED,NU_DOCM_IDNT FROM TCC_ACC_USR WHERE CO_USR_RED ='$usuario' AND IN_STAT='A'";
$s = oci_parse ($conexion, $query);
oci_execute ($s);
while ( $row = oci_fetch_array ($s, OCI_ASSOC))
{
$cedula = $row ['NU_DOCM_IDNT'];

}
if (empty($cedula))
{
return false;
}
else
return $cedula;
}
else return false;
}


function fx_dat_pers ($cedula)
{
include ('sicc_acc_con.php');
$query = "SELECT NB_PERS,NU_DOCM_IDNT,TX_DIR_EMAIL FROM TRH_PERSONAL WHERE NU_DOCM_IDNT =$cedula";
$s = oci_parse ($conexion, $query);
oci_execute ($s);
while ( $row = oci_fetch_array ($s, OCI_ASSOC))
{
echo $nombre = $row ['NB_PERS']. "<br>";
echo $cedula = $row ['NU_DOCM_IDNT']. "<br>";
echo $correo = $row['TX_DIR_EMAIL']. "<br>";
}

return $nombre;
return $cedula;
return $correo;
}

function fx_upd_usr ( $usuario )
{
include ('sicc_acc_con.php');

if (!empty ($usuario))
{
$ip_address = fx_ip_add();
$query = "UPDATE TCC_ACC_USR SET FE_ULT_CON_USR =SYSDATE, IP_ADDRESS = '".$ip_address."'
WHERE CO_USR_RED ='$usuario' AND IN_STAT='A'";
//print $query;
//die;
$s = oci_parse ($conexion, $query);
oci_execute ($s);
}
}

function fx_ip_add ()
{
return $_SERVER['REMOTE_ADDR'];
}

?>

Mi pregunta es como hacer la sacar de ese arreglo de la function fx_dat_pers (el nombre, la cedula, y el correo. y asociarla con su respectiva variable de session e imprimirla antes de caer en la locura..
  #2 (permalink)  
Antiguo 11/01/2012, 14:52
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 2 meses
Puntos: 24
Respuesta: Problema con las sesiones.

Como tienes es un arreglo y reccorres un while fuera del while guardas asi:
while ( $row = oci_fetch_array ($s, OCI_ASSOC))
{
echo $nombre = $row ['NB_PERS']. "<br>";
echo $cedula = $row ['NU_DOCM_IDNT']. "<br>";
echo $correo = $row['TX_DIR_EMAIL']. "<br>";
}

$_SESSION['row']=$row;

Y PARA MOSTRARLO ASI:

echo $_SESSION['row']['0'];

bueno asi lo eh probado yo segun los campos que tengas le asignas el valor a $_SESSION['row']['0'] claro si son esos 3 lo haria manual si son muchas mas usaria otro while.. saludos

Etiquetas: variables, 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 06:51.