Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No se mantenie info de $_SESSION por que?

Estas en el tema de No se mantenie info de $_SESSION por que? en el foro de PHP en Foros del Web. Hola a todos, Este codigo va en todas las paginas creadas para mostrar el login del user al momento de navegar por otra pagina se ...

  #1 (permalink)  
Antiguo 06/11/2015, 16:15
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
No se mantenie info de $_SESSION por que?

Hola a todos,

Este codigo va en todas las paginas creadas para mostrar el login del user
al momento de navegar por otra pagina se va el nombre y apellido Pero Se
mantiene el Nick que es el campo "$cedula" con el que se logea

Por que sucede eso, que es lo que esta mal o falta se podra resolver?
me prodran ayudar?
Código PHP:
<?php
include_once('conn.php'); // Coneción 
include_once('adodb/adodb.inc.php');
if (!isset(
$_SESSION['auth_user'])) loginuser(); 
?>
<?  
mysql_connect
($dbhost,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db($dbdatabase) or die(mysql_error());
$_SESSION['cedula'] = $_POST['cedula'];
$_SESSION['personasid'] = $_POST['personasid'];
$_SESSION['nombres'] = $_GET['nombres'];
$_SESSION['nombres'] = $_POST['nombres'];
$_SESSION['apellidos'] = $_POST['apellidos'];
//$cedula = $_SESSION['cedula'];
$result mysql_query("SELECT * FROM personas WHERE cedula='".$_SESSION["cedula"]."' ");
while (
$row mysql_fetch_array($resultMYSQL_ASSOC))  {
        
$personasid $row['personasid'];
        
$cedula $row['cedula'];
        
$nombres $row['nombres'];    

?>
AQUI MUESTRA LOS DATOS AL ENVIAR AL CONECTARSE

<?  if (isset($_SESSION['auth_user'])) { echo ' '.$_SESSION['auth_user']?> 
<? echo  $nombres?> <br>
<? echo  $apellidos?><br>

<? ?>


PUSE ESTO, AL CAMBIAR DE PAG SE VA los datos y solo queda el NICK
<?
if (isset($_SESSION['cedula'])){
    
echo 
"estas logueado ";
 echo   
$apellidos;  ''.$row['apellidos'];    
}else{
echo 
"Por favor inicie sesion.";
}


?>
  #2 (permalink)  
Antiguo 06/11/2015, 16:20
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

no estas iniciando la sesion en las paginas es logico que no la mantenga:

deberia de estas asi:
Código PHP:
Ver original
  1. <?php
  2. session_start();//qui inicias la sesión cargada en el navegador
  3.  
  4. if (isset($_SESSION['cedula'])){
  5.      
  6. echo "estas logueado ";
  7.  echo   $apellidos;  ''.$row['apellidos'];    
  8. }else{
  9. echo "Por favor inicie sesion.";
  10. }
  11.  
  12.  
  13. ?>

por cierto esta tambien deberia de estar asi:

Código PHP:
Ver original
  1. <?php
  2. sesdsion_start();
  3. include_once('conn.php'); // Coneción  
  4. include_once('adodb/adodb.inc.php');
  5. if (!isset($_SESSION['auth_user'])) loginuser();  
  6. ?>
  7. <?  
  8. mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  9. mysql_select_db($dbdatabase) or die(mysql_error());
  10. $_SESSION['cedula'] = $_POST['cedula'];
  11. $_SESSION['personasid'] = $_POST['personasid'];
  12. $_SESSION['nombres'] = $_GET['nombres'];
  13. $_SESSION['nombres'] = $_POST['nombres'];
  14. $_SESSION['apellidos'] = $_POST['apellidos'];
  15. //$cedula = $_SESSION['cedula'];
  16. $result = mysql_query("SELECT * FROM personas WHERE cedula='".$_SESSION["cedula"]."' ");
  17. while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  {
  18.         $personasid = $row['personasid'];
  19.         $cedula = $row['cedula'];
  20.         $nombres = $row['nombres'];    
  21. }  
  22. ?>
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 06/11/2015, 16:39
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por xfxstudios Ver Mensaje
no estas iniciando la sesion en las paginas es logico que no la mantenga:

deberia de estas asi:
Código PHP:
Ver original
  1. <?php
  2. session_start();//qui inicias la sesión cargada en el navegador
  3.  
  4. if (isset($_SESSION['cedula'])){
  5.      
  6. echo "estas logueado ";
  7.  echo   $apellidos;  ''.$row['apellidos'];    
  8. }else{
  9. echo "Por favor inicie sesion.";
  10. }
  11.  
  12.  
  13. ?>

por cierto esta tambien deberia de estar asi:

Código PHP:
Ver original
  1. <?php
  2. sesdsion_start();
  3. include_once('conn.php'); // Coneción  
  4. include_once('adodb/adodb.inc.php');
  5. if (!isset($_SESSION['auth_user'])) loginuser();  
  6. ?>
  7. <?  
  8. mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  9. mysql_select_db($dbdatabase) or die(mysql_error());
  10. $_SESSION['cedula'] = $_POST['cedula'];
  11. $_SESSION['personasid'] = $_POST['personasid'];
  12. $_SESSION['nombres'] = $_GET['nombres'];
  13. $_SESSION['nombres'] = $_POST['nombres'];
  14. $_SESSION['apellidos'] = $_POST['apellidos'];
  15. //$cedula = $_SESSION['cedula'];
  16. $result = mysql_query("SELECT * FROM personas WHERE cedula='".$_SESSION["cedula"]."' ");
  17. while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  {
  18.         $personasid = $row['personasid'];
  19.         $cedula = $row['cedula'];
  20.         $nombres = $row['nombres'];    
  21. }  
  22. ?>


hola xfxstudios sigue igual cuando hago clic a otra pagina se va los datos solo queda el nick este codigo lo copio en todas las pages para navegar logeado pero solo da el nick, menos los datos nombres etc..

que podra ser?
si todas las paginas traen ¨¨session_start();¨

Última edición por pilucho; 06/11/2015 a las 16:40 Razón: arg.
  #4 (permalink)  
Antiguo 06/11/2015, 16:58
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

otra cosa aqui no deberian de ir las variables de sesion que creaste????:

Código PHP:
Ver original
  1. <?php
  2. session_start();//qui inicias la sesión cargada en el navegador
  3.  
  4. if (isset($_SESSION['cedula'])){
  5.      
  6. echo "estas logueado ";
  7. //NO SE QUE ES ESTO AQUI
  8.  echo   $apellidos;  ''.$row['apellidos'];    
  9.  
  10. //PODRAS MOSTRARELO ASI:
  11. echo $_SESSION['nombres']
  12. }else{
  13. echo "Por favor inicie sesion.";
  14. }
  15.  
  16.  
  17. ?>
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 06/11/2015, 23:16
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por xfxstudios Ver Mensaje
otra cosa aqui no deberian de ir las variables de sesion que creaste????:

Código PHP:
Ver original
  1. <?php
  2. session_start();//qui inicias la sesión cargada en el navegador
  3.  
  4. if (isset($_SESSION['cedula'])){
  5.      
  6. echo "estas logueado ";
  7. //NO SE QUE ES ESTO AQUI
  8.  echo   $apellidos;  ''.$row['apellidos'];    
  9.  
  10. //PODRAS MOSTRARELO ASI:
  11. echo $_SESSION['nombres']
  12. }else{
  13. echo "Por favor inicie sesion.";
  14. }
  15.  
  16.  
  17. ?>

Hola xfxstudio hice los cambios que me haz sugerido teniendo en cuenta que todo el codigo esta en todas las paginas para mostrar el nick y su nombres completos,
pero aun asi puesto lo sugerido desaparece los datos y queda solo el nick

que podra ser?

Código PHP:
Ver original
  1. <?php
  2. session_start();//qui inicias la sesión cargada en el navegador
  3.  
  4. if (isset($_SESSION['cedula'])){
  5.      
  6. echo "estas logueado ";
  7.  echo   $apellidos;  ''.$row['apellidos']; // ESTO ERA PARA PROBAR EN CASO PUEDA RESULTAR
  8.  
  9.  echo $_SESSION['nombres'];
  10.      
  11. }else{
  12. echo "Por favor inicie sesion.";
  13. }
  14. ?>

Última edición por pilucho; 06/11/2015 a las 23:18 Razón: cerrar /php
  #6 (permalink)  
Antiguo 07/11/2015, 16:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

es lamentable no encontrar solucion pero bueno ya llegara..!
  #7 (permalink)  
Antiguo 07/11/2015, 16:37
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

coloca tu codigo completo de loging a ver como lo tienes implementado, no es posible que estes estancado en una sesion, coloca el codigo donde se loguean y creas la sesion y el que utilizas en las paginas nuevamente para ver
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 07/11/2015, 17:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por xfxstudios Ver Mensaje
coloca tu codigo completo de loging a ver como lo tienes implementado, no es posible que estes estancado en una sesion, coloca el codigo donde se loguean y creas la sesion y el que utilizas en las paginas nuevamente para ver
Hola xfxstudios te copio el codigo completo espero me puedas ayudar por favor.

Codigo de funciones

Código PHP:
Ver original
  1. <?
  2. function loginuser()
  3. {
  4.  
  5.     $cedula = $_POST['cedula'];
  6.     $clave = $_POST['clave'];
  7.     $nombres = $_POST['nombres'];
  8.     $nombres = $_GET['nombres'];
  9.     if ($cedula && $clave)
  10.     {
  11.         include_once('adodb/adodb.inc.php');
  12.         include_once('conn.php'); // Coneción
  13.         $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
  14.         $conn = &ADONewConnection('mysql');
  15.         $conn->Connect($dbhost,$dbuser,$dbpass,$dbdatabase);
  16.         $pass = md5($clave);
  17.         $uname = capotexto($cedula);
  18.         $sqlstmt = "SELECT role FROM personas WHERE cedula='$uname' AND clave='$pass'";
  19.         $recordSet = &$conn->Execute("$sqlstmt");
  20.         $numResults = $recordSet->RecordCount();
  21.         $userRole = $recordSet->fields['role'];
  22.        
  23.         if ($numResults > 0)
  24.             {
  25.                 $_SESSION['auth_user'] = $cedula;
  26.                 $_SESSION['auth_role'] = $userRole;
  27.             }
  28.         else
  29.             {
  30.                 $page = new pagebuilder('../');
  31.                 //
  32.                 echo "<div align=center> $cedula. no es correcto <a href='javascript:history.go(-1);'>Volver</a></div>";
  33.                 exit;
  34.             }
  35.     }
  36.     else
  37.     {
  38.         $page = new pagebuilder('../');
  39.         //
  40.         echo "<div align=center>  Usuario y Contrase&ntilde;a. <a href='javascript:history.go(-1);'>Volver</a></div>";
  41.         exit;
  42.     }
  43. }
  44.  
  45. function checkUser($check='')
  46. {
  47.  
  48.     if (!isset($_SESSION['auth_user']))
  49.     {
  50.         $page = new pagebuilder('../');
  51.         //
  52.         echo "<div align=center> aun no se ha logeado </div><br>";
  53.         echo "<div align=center> <a href='javascript:history.go(-1);'>Volver</a></div>";
  54.         exit;
  55.     }
  56.     if ($check)
  57.     {
  58.         if ($_SESSION['auth_role'] != $check)
  59.         {
  60.             $page = new pagebuilder('../');
  61.             //
  62.             echo "<div align=center> no tienes permiso!<br></div>";
  63.             exit;  
  64.         }
  65.     }
  66. }
  67. ?>

Codigo que va en todas las paginas.
AL CAMBiar a otra pagina se va los datos solo queda el nick

Código PHP:
Ver original
  1. <?php
  2. if (!isset($_SESSION['auth_user'])) loginuser();
  3.  
  4. mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  5. mysql_select_db($dbdatabase) or die(mysql_error());
  6. // Esto por si las dudas
  7. $_SESSION['cedula'] = $_POST['cedula'];
  8. $_SESSION['personasid'] = $_POST['personasid'];
  9. $_SESSION['nombres'] = $_POST['nombres'];
  10. $_SESSION['apellidos'] = $_POST['apellidos'];
  11.  
  12. $result = mysql_query("SELECT * FROM personas WHERE cedula='".$_SESSION["cedula"]."' ");
  13. while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  {
  14.         $personasid = $row['personasid'];
  15.         $nombres = $row['nombres'];
  16.         $apellidos = $row['apellidos'];
  17. }
  18. //
  19. ?>
  20. <?php  if (isset($_SESSION['auth_user'])) {  ?>
  21.  Hola! <? echo  $nombres; ?> <? echo   $apellidos;  ?>  
  22.  Nick <? echo ' '.$_SESSION['auth_user']; ?>
  23.  ID <? echo  $personasid; ?>
  24.  
  25. <? } ?>



Código HTML:
<form action="inicio.php" method="POST">
<input  name="cedula" type="text" />
<input name="clave" type="password" />
<input name="Entrar" type="submit"> 
</form> 


La Tabla por las duas
Código HTML:
CREATE TABLE `personas` (
  `personasid` int(11) NOT NULL AUTO_INCREMENT,
  `cedula` varchar(40) NOT NULL DEFAULT '',
  `clave` varchar(40) NOT NULL DEFAULT '',
  `email` varchar(60) DEFAULT NULL,
  `role` varchar(20) default NULL,
  `nombres` varchar(100) NOT NULL DEFAULT '',
  `apellidos` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`personasid`),
  UNIQUE KEY `cedula` (`cedula`)
) ;
  #9 (permalink)  
Antiguo 07/11/2015, 17:45
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Aqui encontre algo pero nose si eso puede solucionar mi problema y si es asi como lo usaria?

Por si ayuda
  #10 (permalink)  
Antiguo 07/11/2015, 19:52
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

parece que esta dificil solocionar mi problema
  #11 (permalink)  
Antiguo 07/11/2015, 20:32
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años, 1 mes
Puntos: 19
Respuesta: No se mantenie info de $_SESSION por que?

Mira, una de las cosas más complicadas relacionadas con la programación es leer el código ajeno y entender tal como el primer programador escribió, la situación empeora cuando el código está como lo muestras.

Session_start tiene que estar al principio de todas las páginas antes de cualquier otra línea, debes cerrar correctamente tus llaves {} y tener un mínimo de orden.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #12 (permalink)  
Antiguo 07/11/2015, 20:50
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por AlejandraLara Ver Mensaje
Mira, una de las cosas más complicadas relacionadas con la programación es leer el código ajeno y entender tal como el primer programador escribió, la situación empeora cuando el código está como lo muestras.

Session_start tiene que estar al principio de todas las páginas antes de cualquier otra línea, debes cerrar correctamente tus llaves {} y tener un mínimo de orden.
asi es alejandra lara, esta en todas las paginas al inicio de todo session_start();
ya que si logea y muestra el NIck del user, pero no al pasar a otra pagina se borra los nombres y solo queda el nick por eso envie el codigo completo, es cosa de crear una tabla que deje ahi y listo veras que funciona con el detalle si abres otra pagina se borra el nombre y solo queda el nick
  #13 (permalink)  
Antiguo 07/11/2015, 21:10
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años, 1 mes
Puntos: 19
Respuesta: No se mantenie info de $_SESSION por que?

Tu código es muy feo, aunque lo suba e intente correrlo tendré que leer una tortura, al principio debe llevar session_start pero si dices que ya lo lleva entonces intenta iniciarla cuando le des login al usuario. Algo así:

//si todos los datos correctos
session_start();
$_SESSION['misession'] = $midato;
header("Location: welcome.php");

Y el welcome.php debe iniciar también con session_start.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #14 (permalink)  
Antiguo 07/11/2015, 21:29
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por AlejandraLara Ver Mensaje
Tu código es muy feo, aunque lo suba e intente correrlo tendré que leer una tortura, al principio debe llevar session_start pero si dices que ya lo lleva entonces intenta iniciarla cuando le des login al usuario. Algo así:

//si todos los datos correctos
session_start();
$_SESSION['misession'] = $midato;
header("Location: welcome.php");

Y el welcome.php debe iniciar también con session_start.
probe tambien de esa forma y todos con llevan el mismo codigo ejemplo en welcome.php lleva el codigo muestra la session de nick del user pero los nombres apellidos desaparecen como magia ese es el punto..

y no sabia que tenia que pintar el codigo ponerle pestañas y uñas etc para que quede bonito, pero si es asi tendre que ver como haces tu un codigo bonito

el punto es que cual fuera la solucion mientras funcione yo me adapto, aun estoy esperando la ayuda del usuario que me pidio el codigo completo.
  #15 (permalink)  
Antiguo 07/11/2015, 21:58
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años, 1 mes
Puntos: 19
Respuesta: No se mantenie info de $_SESSION por que?

El código SIEMPRE debe ser ordenado y limpio (siquiera lo mínimo) para poder depurar correcta (y rapidamente) cualquier error. Tu siempre tienes problemas en tus scripts por la sencilla razón de que no le pones orden y al final no sabes como depurarlo (o la solución se hace complicada).

Mira, un código basado en tu script de menos de 5 minutos ¡sin pestañas ni uñas! pero listo para depurar:
http://pastebin.com/YF0EuTXz

Si haces una nueva pagina (paginaequis.php) y le añades session_start() funciona perfecto. Puedes adaptarlo según lo necesites.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #16 (permalink)  
Antiguo 07/11/2015, 22:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por AlejandraLara Ver Mensaje
El código SIEMPRE debe ser ordenado y limpio (siquiera lo mínimo) para poder depurar correcta (y rapidamente) cualquier error. Tu siempre tienes problemas en tus scripts por la sencilla razón de que no le pones orden y al final no sabes como depurarlo (o la solución se hace complicada).

Mira, un código basado en tu script de menos de 5 minutos ¡sin pestañas ni uñas! pero listo para depurar:
http://pastebin.com/YF0EuTXz

Si haces una nueva pagina (paginaequis.php) y le añades session_start() funciona perfecto. Puedes adaptarlo según lo necesites.
voy a probar, a ver como me resulta y la verdad ahora comprendi el orden se ve pocos codigos y mas odenado espereremos me resulte voy a probar ahora mismo
  #17 (permalink)  
Antiguo 07/11/2015, 22:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Malas noticias no aparece nada esta vacio

Código PHP:
Ver original
  1. <?php
  2.  
  3. include_once('conn.php'); // Coneción
  4.  
  5. //funciones
  6. function verificar_usuario($cedula,$clave){
  7.     $query = mysqli_query("SELECT * FROM personas WHERE cedula = '$cedula' AND clave = '$clave' LIMIT 1");
  8.     $num = mysqli_num_rows($query);
  9.  
  10.     if($num > 0){
  11.         return true;
  12.     }else{
  13.         return false;
  14.     }
  15.  
  16.     mysqli_free_result($query);
  17.     unset($query);unset($num);
  18. }
  19.  
  20.  
  21. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  22.  
  23. //me saltaré validaciones y sanitizaciones
  24. $cedula = $_POST['cedula'];
  25. $clave = $_POST['clave'];
  26.  
  27.     if(verificar_usuario($cedula,$clave)){
  28.         session_start();
  29.         $_SESSION['cedula'] = $cedula;
  30.         $_SESSION['clave'] = $clave;
  31.         header("Location: inicio.php");
  32.     }else{
  33.         echo 'Datos incorrectos.';
  34.     }
  35.  
  36.  
  37. }else{
  38.     if(isset($_SESSION['cedula'])){
  39.         echo 'Bienvenido '.$_SESSION['cedula'];
  40.     }else{
  41.         include('u_demo.php');
  42.     }
  43. }
  44.  
  45.  
  46. //mysqli_close($conexion);
  47.  
  48. ?>

u_demo.php
Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <?php
  4. //nombres
  5. $_SESSION['nombres'] = $_POST['nombres'];
  6. ?>
  #18 (permalink)  
Antiguo 07/11/2015, 22:36
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años, 1 mes
Puntos: 19
Respuesta: No se mantenie info de $_SESSION por que?

¿Qué? ¿Para qué sacaste el formulario y pusiste eso? ¿De dónde sacaste esas variables de sesión en tu archivo u_demo? El fomulario déjalo ahí, solo crea el archivo form.html y pega tu formulario html.

Luego, crea OTRO archivo por ejemplo "demo.php" con:

session_start();
echo 'Hola '. $_SESSION['cedula'];

Y ya.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #19 (permalink)  
Antiguo 07/11/2015, 22:58
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por AlejandraLara Ver Mensaje
¿Qué? ¿Para qué sacaste el formulario y pusiste eso? ¿De dónde sacaste esas variables de sesión en tu archivo u_demo? El fomulario déjalo ahí, solo crea el archivo form.html y pega tu formulario html.

Luego, crea OTRO archivo por ejemplo "demo.php" con:

session_start();
echo 'Hola '. $_SESSION['cedula'];

Y ya.
no entendi
solo puse en u_demo.php
y solo sale hola
Código PHP:
<?php
session_start
();
echo 
'Hola '$_SESSION['cedula'];
?>
  #20 (permalink)  
Antiguo 07/11/2015, 23:00
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

mira este codigo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //conexion
  4. require_once('../xxxxxxxxxx/xxxxxxxxx.php');
  5.  
  6. if($_POST['usuario']==""){
  7.     $msg = "";
  8. } else if($_POST['password']==""){
  9.     $msg = "";
  10. }else{
  11.    
  12. //asignamos la variable usuario
  13. $usuario = mysqli_real_escape_string($db, $_POST['usuario']);
  14.  
  15. //buscamos los datos en la base basados en el usuario que se conecta
  16. $users = $db->query("SELECT usuario,pass,estados FROM usuarios WHERE usuario ='$usuario'");
  17.  
  18.  
  19. $row_result = $users->fetch_array();
  20.  
  21. //encriptamos la clave que recibimos y la asignamos a una variable para su posterior comparación
  22. $password = (crypt($_POST['password'], $row_result['pass']));
  23.  
  24. //asignamos las variables basadas en lo recogido de la consulta
  25. $usuario = $row_result['usuario'];
  26. $clave = $row_result['pass'];
  27. $nivel = $row_result['nivel'];
  28.  
  29. comparamos la clave con la almacenada y si el usuario esta activo
  30.  if($clave == $password && $estados == "Activo"){
  31.      
  32. //si todo esta bien creo las variables de sesion que usare en toda mi aplicacion
  33.      $_SESSION['MM_Username'] = $usuario;
  34.      $_SESSION['logueado'] = true;
  35.      $_SESSION['nivel'] = $nivel;
  36.  
  37. //envio un email de confirmacion de conexion al usuario
  38.      //se compone el mensaje
  39.     require("recursos/class.phpmailer.php");
  40.     $mail = new PHPMailer();
  41.     $mail->From = "[email protected]";
  42.     $mail->FromName = "INFORME xxxxxxxxx";
  43.     $mail->Subject = "Nueva conexion de ".$nombre." a PSSLpro";
  44.     $mail->AddAddress($usuario, $nombre);
  45.     $mail->IsHTML(true);
  46.     $mail->AddEmbeddedImage('img/logo_xxxxx_xxxxx_peq.png', 'logo');
  47.    
  48.     $body = "<img src='cid:logo' alt='mail image' width='180px' height='40px' border='0'/><br><hr>";
  49.     $body .= "Nueva Conexión al sistema xxxxxxx con exito <b>".$nombre."</b>\n\n";
  50.     $body .= "<hr>";
  51.     $body .= "Fecha de la conexión: ".date("d-m-Y")."\n\n";
  52.     $body .= " hora de la conexion ".date("H:m:s")."\n\n";
  53.     $body .= "Desde la ip: ".$_SERVER['REMOTE_ADDR']."\n\n";
  54.     $body .= "<hr>";
  55.     $mail->Body = $body;
  56.     $mail->Send();
  57.    
  58. //inserto en la tabla de contro que el usuario esta activo en el sistema
  59.     $fecha = date("Y-m-d");
  60.     $hora = date("H:m:s");
  61.     $activos = $db->query("INSERT INTO usuarios_activos (usuario, fecha, hora, ip, rif, unidad_explot) VALUES ('$usuario' , '$fecha' , '$hora' , '$_POST[ip]' , '$rif' , '$unidad')");
  62.  
  63. //lo redirecciono al escritorio
  64.      header('location: escritorio.php');
  65.  
  66. //si esta suspendido lo envio a otra locacion
  67.  } else if($estados == "Suspendido"){
  68.     header('location: suspendido.php');
  69.  
  70. //en caso contrario le indico que los datos son invalidos
  71.         }else{
  72.      $msg = "Datos inválidos";
  73.  }
  74. }
  75. ?>

y en cada pagina solo tengo esto:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.      
  4.     if (isset($_SESSION['MM_Username']) && $_SESSION['logueado'] == true && $_SESSION['estados']== "Activo")
  5.     {
  6.     }
  7.     else
  8.     {
  9.         header('Location:/app/error_acceso.php');
  10.    
  11. //en caso de que se salte el header por alguna extraña razon, muestro los mensajes
  12.    
  13. echo "<br/>" . "Esta pagina es solo para usuarios registrados." . "<br/>";
  14.    
  15. echo "<br/>" . "<a href='index.php'>Ingresa aqui!!!</a>";
  16.      
  17.     exit;
  18.     }
  19.     ?>

este codigo es mucho mas extenso y con muchas mas variables de sesion pero solo te coloque lo basico que funciona bastante bien, ya solo queda jugar con el resto amigo
__________________
[email protected]
HITCEL
  #21 (permalink)  
Antiguo 07/11/2015, 23:02
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

la verdad no entiendo, pense que con eso se solucionaria, pero creo que solo saldra el NICK y no los demas campos, por que el codigo que tengo yo tambien me muestra en todas las paginas en NICK del usuario registrado, pero mas no los nombres completos, y modifique para que se vea los nombres y ya se ven pero al hacer clic a otra pagina que tambien incluye ¨session_start();¨ solo sale el nick pero los nombres desaparecen y al volver a la pagina donde estaba apareciendo tambien se borra,,, entonces solo me queda el NICK fijo,

y no comprendo con eso de crear un formulario HTML con que fin la verdad no comprendo
  #22 (permalink)  
Antiguo 07/11/2015, 23:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

lo bueno de esto AlejandraLara que te has ganado un punto pero mi problema sigue, sin solucion
  #23 (permalink)  
Antiguo 07/11/2015, 23:12
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por xfxstudios Ver Mensaje
mira este codigo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //conexion
  4. require_once('../xxxxxxxxxx/xxxxxxxxx.php');
  5.  
  6. if($_POST['usuario']==""){
  7.     $msg = "";
  8. } else if($_POST['password']==""){
  9.     $msg = "";
  10. }else{
  11.    
  12. //asignamos la variable usuario
  13. $usuario = mysqli_real_escape_string($db, $_POST['usuario']);
  14.  
  15. //buscamos los datos en la base basados en el usuario que se conecta
  16. $users = $db->query("SELECT usuario,pass,estados FROM usuarios WHERE usuario ='$usuario'");
  17.  
  18.  
  19. $row_result = $users->fetch_array();
  20.  
  21. //encriptamos la clave que recibimos y la asignamos a una variable para su posterior comparación
  22. $password = (crypt($_POST['password'], $row_result['pass']));
  23.  
  24. //asignamos las variables basadas en lo recogido de la consulta
  25. $usuario = $row_result['usuario'];
  26. $clave = $row_result['pass'];
  27. $nivel = $row_result['nivel'];
  28.  
  29. comparamos la clave con la almacenada y si el usuario esta activo
  30.  if($clave == $password && $estados == "Activo"){
  31.      
  32. //si todo esta bien creo las variables de sesion que usare en toda mi aplicacion
  33.      $_SESSION['MM_Username'] = $usuario;
  34.      $_SESSION['logueado'] = true;
  35.      $_SESSION['nivel'] = $nivel;
  36.  
  37. //envio un email de confirmacion de conexion al usuario
  38.      //se compone el mensaje
  39.     require("recursos/class.phpmailer.php");
  40.     $mail = new PHPMailer();
  41.     $mail->From = "[email protected]";
  42.     $mail->FromName = "INFORME xxxxxxxxx";
  43.     $mail->Subject = "Nueva conexion de ".$nombre." a PSSLpro";
  44.     $mail->AddAddress($usuario, $nombre);
  45.     $mail->IsHTML(true);
  46.     $mail->AddEmbeddedImage('img/logo_xxxxx_xxxxx_peq.png', 'logo');
  47.    
  48.     $body = "<img src='cid:logo' alt='mail image' width='180px' height='40px' border='0'/><br><hr>";
  49.     $body .= "Nueva Conexión al sistema xxxxxxx con exito <b>".$nombre."</b>\n\n";
  50.     $body .= "<hr>";
  51.     $body .= "Fecha de la conexión: ".date("d-m-Y")."\n\n";
  52.     $body .= " hora de la conexion ".date("H:m:s")."\n\n";
  53.     $body .= "Desde la ip: ".$_SERVER['REMOTE_ADDR']."\n\n";
  54.     $body .= "<hr>";
  55.     $mail->Body = $body;
  56.     $mail->Send();
  57.    
  58. //inserto en la tabla de contro que el usuario esta activo en el sistema
  59.     $fecha = date("Y-m-d");
  60.     $hora = date("H:m:s");
  61.     $activos = $db->query("INSERT INTO usuarios_activos (usuario, fecha, hora, ip, rif, unidad_explot) VALUES ('$usuario' , '$fecha' , '$hora' , '$_POST[ip]' , '$rif' , '$unidad')");
  62.  
  63. //lo redirecciono al escritorio
  64.      header('location: escritorio.php');
  65.  
  66. //si esta suspendido lo envio a otra locacion
  67.  } else if($estados == "Suspendido"){
  68.     header('location: suspendido.php');
  69.  
  70. //en caso contrario le indico que los datos son invalidos
  71.         }else{
  72.      $msg = "Datos inválidos";
  73.  }
  74. }
  75. ?>

y en cada pagina solo tengo esto:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.      
  4.     if (isset($_SESSION['MM_Username']) && $_SESSION['logueado'] == true && $_SESSION['estados']== "Activo")
  5.     {
  6.     }
  7.     else
  8.     {
  9.         header('Location:/app/error_acceso.php');
  10.    
  11. //en caso de que se salte el header por alguna extraña razon, muestro los mensajes
  12.    
  13. echo "<br/>" . "Esta pagina es solo para usuarios registrados." . "<br/>";
  14.    
  15. echo "<br/>" . "<a href='index.php'>Ingresa aqui!!!</a>";
  16.      
  17.     exit;
  18.     }
  19.     ?>

este codigo es mucho mas extenso y con muchas mas variables de sesion pero solo te coloque lo basico que funciona bastante bien, ya solo queda jugar con el resto amigo

hola xfxstudios me hiciste copiar todo el codigo pensando encontrarias el problema .... y me das un codigo que posiblente funcione,... pero haciendo las pruebas... con que fin hace un insert si ya tengo un campo para los registros, --- y lo otro por que enviar la conexion al email?? la verdad no comprendo el codigo pero lo voy a probar solo cambiare a mi sql a ver si tengo suerte
  #24 (permalink)  
Antiguo 07/11/2015, 23:22
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

hola xfxstudios acabo de probar el codigo y hay muchos errores, y no se presta para la solucion adaptarlo no comprendo por que activos si en mi tabla que te puse ahi,,, ya hay permiso,

es simple solo necesito muestre los demas datos del usuario logeado...

aqui hay muchos en programacion que dicen saber se hacen hasta moderador al final no solucionan nada, solo alardean

si realmente supieran esos segun sabelo todos creo que estaria el ejemplo de la mayoria resuelto, no me sorprenderia que por unos puntos se hagan moderadores

buscan lo mas facil y listo, pero bueno es un tema del owner mi problema aun sigue sin resolver y segun los moustros de la programacion brillan en ausencia
  #25 (permalink)  
Antiguo 07/11/2015, 23:23
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

amigo me doy contigo, lo digo porque el codigo que te di funciona bastante bien ya que lo utilizo en mi aplicacion, lo que no te coloque alli fueron todas las variables que creo en el, si no puedes analizar un codigo y adaptarlo a tu sistema entonces estas bastante mal en esto, imagina esto:
Cita:
<?php

session_start();
include_once('conn.php'); // Coneción

//funciones
function verificar_usuario($cedula,$clave){
$query = mysqli_query("SELECT * FROM personas WHERE cedula = '$cedula' AND clave = '$clave' LIMIT 1");
$num = mysqli_num_rows($query);

if($num > 0){
return true;
}else{
return false;
}

mysqli_free_result($query);
unset($query);unset($num);
}


if($_SERVER['REQUEST_METHOD'] == 'POST'){

//me saltaré validaciones y sanitizaciones
$cedula = $_POST['cedula'];
$clave = $_POST['clave'];

if(verificar_usuario($cedula,$clave)){
session_start();
$_SESSION['cedula'] = $cedula;
$_SESSION['clave'] = $clave;
header("Location: inicio.php");
}else{
echo 'Datos incorrectos.';
}


}else{
if(isset($_SESSION['cedula'])){
echo 'Bienvenido '.$_SESSION['cedula'];
}else{
include('u_demo.php');
}
}


//mysqli_close($conexion);

?>
dime donde en tu codigo creas las variables de sesion con los nombres para mostrarlos???????????????????????? por dios ten logica

Código PHP:
Ver original
  1.  
  2. //recibo la variable usuario
  3. $usuario = $_post['usuario'];
  4.  
  5. //verifico el usuario
  6. $veri = $db->query("select * from usuarios where usuario = '$usuario'");
  7. $total = mysqli_num_rows($veri);
  8. $row = $very->fetch_assoc();
  9.  
  10. if($total == 1){
  11.  
  12. $nick = $row['usuario'];
  13. $nombre = $row['nombre'];
  14. $apellido = $row['apellido'];
  15.  
  16. $_session['nick'] = $nick;
  17. $_session['nombre'] = $nombre;
  18. $_session['apellido'] = $apellido;
  19.  
  20. header('location:loquesea.php');
  21. } else{
  22. header('location:error.php');
  23. }

como puedes ver en este pequeño codigo que te coloco que es un resumen del anterior que te coloque y que no supiste leer solo copiar y pegar, verifico el usuario, si esta, asigno las variables de sesion y alli si las puedo mostrar donde las necesite.

Saludos!!!!
__________________
[email protected]
HITCEL
  #26 (permalink)  
Antiguo 07/11/2015, 23:28
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por pilucho Ver Mensaje
hola xfxstudios acabo de probar el codigo y hay muchos errores, y no se presta para la solucion adaptarlo no comprendo por que activos si en mi tabla que te puse ahi,,, ya hay permiso,

es simple solo necesito muestre los demas datos del usuario logeado...

aqui hay muchos en programacion que dicen saber se hacen hasta moderador al final no solucionan nada, solo alardean

si realmente supieran esos segun sabelo todos creo que estaria el ejemplo de la mayoria resuelto, no me sorprenderia que por unos puntos se hagan moderadores

buscan lo mas facil y listo, pero bueno es un tema del owner mi problema aun sigue sin resolver y segun los moustros de la programacion brillan en ausencia
no voy a entrar en detalles, solo se que te he pasado para ayudarte unos cuantos codigos usados por mi en mis app y no has sabido adaptarlos a tus necesidades, no puedo darte un codigo ya listo para que copies y pegues sin tener la idea de la estructura de tu aplicacion ni de tus bases, lo que te puedo dar y es lo que he hecho es darte la estrctura basica para la creacion de una sesion y TU debes adaptarla a tu necesidad. Igual Suerte y saludos nuevamente, espero poder ayudarte en otra ocasion y disculpa si no lo he podido hacer en esta.
__________________
[email protected]
HITCEL
  #27 (permalink)  
Antiguo 07/11/2015, 23:34
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

hola xfxstudios yo estoy muy agradecido por tu apoyo si soy algo viejo para aprender pero bueno voy a tratar de ver como lo soluciono con lo que me has dado, asi me demore un año pero lo intentare, tendre que pagar para que lo solucionen de momento voy a ver si resuelvo con lo que me has dado.

aun que el segundo codigo supongo que ahi debo editar con mi sql, en el php u_demo.php

¨$veri = $db->query("select * from usuarios where usuario = '$usuario'");¨
  #28 (permalink)  
Antiguo 07/11/2015, 23:51
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Fatal error: Call to a member function query() on null in u_demo.php on line 8

Código PHP:
Ver original
  1. <?php
  2. include_once('conn.php'); // Coneción  
  3. //recibo la variable cedula
  4. $cedula = $_post['cedula'];
  5.  
  6. //verifico el cedula
  7. $veri = $db->query("select * from personas where cedula = '$cedula'");
  8. $total = mysqli_num_rows($veri);
  9. $row = $very->fetch_assoc();
  10.  
  11. if($total == 1){
  12.  
  13. $cedula = $row['cedula'];
  14. $nombres = $row['nombres'];
  15. $apellidos = $row['apellidos'];
  16.  
  17. $_session['cedula'] = $cedula;
  18. $_session['nombre'] = $nombres;
  19. $_session['apellido'] = $apellidos;
  20.  
  21. header('location:loquesea.php');
  22. } else{
  23. header('location:error.php');
  24. }
  25. ?>
  #29 (permalink)  
Antiguo 08/11/2015, 04:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: No se mantenie info de $_SESSION por que?

Saludo
Probablemente sea porque se estan manejando variables distintas
para la conexión, revisar lo que hay en conn.php,
un caso similar aquí.


Por otro lado, $veri y $very (ver líneas 8 a la 10) son variables distintas.

En cuanto a las variables que se usan en las otras páginas,
echo $apellidos; ''.$row['apellidos'];
Sería mejor manejar las variables de sesión con los valores de
nombres y apellidos, osea.
$_SESSION['nombres'] y $_SESSION['apellidos']

En cuanto a la asignación de variables de sesión, se ve esto
$_SESSION['nombres'] = $_GET['nombres'];
$_SESSION['nombres'] = $_POST['nombres'];

El dato llega por get, o por post? Pues ahí se está asignando por get,
y luego se sobreescribe con lo que se recibe por post.

Con eso por ahora para revisar, que hasta ahora empieza noviembre...




__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #30 (permalink)  
Antiguo 08/11/2015, 09:51
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: No se mantenie info de $_SESSION por que?

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
Probablemente sea porque se estan manejando variables distintas
para la conexión, revisar lo que hay en conn.php,
un caso similar aquí.


Por otro lado, $veri y $very (ver líneas 8 a la 10) son variables distintas.

En cuanto a las variables que se usan en las otras páginas,
echo $apellidos; ''.$row['apellidos'];
Sería mejor manejar las variables de sesión con los valores de
nombres y apellidos, osea.
$_SESSION['nombres'] y $_SESSION['apellidos']

En cuanto a la asignación de variables de sesión, se ve esto
$_SESSION['nombres'] = $_GET['nombres'];
$_SESSION['nombres'] = $_POST['nombres'];

El dato llega por get, o por post? Pues ahí se está asignando por get,
y luego se sobreescribe con lo que se recibe por post.

Con eso por ahora para revisar, que hasta ahora empieza noviembre...




hola mortiprogramador viene por post hice la prueba por ambos por eso deje eso ahi y ocueltando con un //// para hacer las pruebas ejemplo si es por post pongo asi //$_SESSION['nombres'] = $_GET['nombres']; asi hago las pruebas

y la verdad dejas las cosas a medias aun no lograste ayduarme con mi otro problema, y nunca entendi el problema, y menos me has dejado un email para pagarte por la ayuda,


nose por que a todos los que saben se le ha dado por hablar en terminos raros NO ES mas facil decir cambia esto que esta el problema aqui? y de ese modo aprender?
pero bueno es un gran egoismo pero se respeta por que se ha ganado lo que se aprendio o quiza le costo en fin es un tema extenso,

Etiquetas: Ninguno
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 12:14.