Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Problema con enlace en php (http://www.forosdelweb.com/f18/problema-con-enlace-php-886794/)

oscarbt 16/02/2011 07:52

Problema con enlace en php
 
Buenas a todos, necesito ayuda en un problema que no he podido resolver

He creado dos secciones de usuarios, una para el administrador y otra para estudiantes y para cada uno de esos dos perfiles, tengo un menu distinto
El problema radica en los enlaces del menu estudiantes

Cuando el estudiante inicia sesion, el boton tipo submit va a autenticacion.php . para cargar la sesion del usuario, como es estudiante se carga el archivo formulario_egresado.php

aca autenticacion.php:

Código PHP:
Ver original
  1. <?
  2. require_once('funciones.php');
  3. $usuario=$_POST['usuario'];
  4. $clave=$_POST['clave'];
  5.  
  6. if (login_in($usuario, $clave)==1)
  7. {
  8. if ($usuario=="admin"){
  9. $_SESSION['valid_user'] = $usuario;
  10. header("Location: administracion.php");
  11. }
  12.     else
  13. {
  14.     $_SESSION['estud'] = $usuario;
  15.     header("Location: formulario_egresado.php?optegresado=$usuario");
  16.  
  17.     }
  18. }
  19. else
  20. {
  21.    
  22. ?>
  23. <html>
  24. <head>
  25. </head>
  26. <body>
  27. <h1>No existe un logueo de usuario</h1>
  28.  
  29. </body>
  30.  
  31. <?
  32. }
  33. ?>

ahora como se dio un inicio de sesion se carga formulario_egresado?optegresado=$cedualdelusuario, donde tengo unas imagenes a traves de las cuales empiezo a ver el resto de informacion de la persona, pasando por POST el campo cedula


Código PHP:
Ver original
  1. require_once('funciones.php');
  2. if (isset($_SESSION['estud']))
  3. {
  4. ?>
  5.  
  6. <html>
  7. <head>
  8. <title>Perfil egresado</title>
  9. </head>
  10. <body>
  11. <?
  12.     $bd = mysql_connect ("localhost", "root", "root");
  13.     if ( !$bd )
  14.         die ("Error en la conexion con el DBMS");
  15.    
  16.     $base_datos = "egresados";
  17.     if ( !mysql_select_db ($base_datos, $bd) )
  18.         die ("Error seleccionando la base de datos");
  19.    
  20.     $query = "SELECT NUM_CED_EGR, NOM_EGR, APE_EGR FROM egresado WHERE NUM_CED_EGR = '$optegresado'";
  21.    
  22.     $resultado_general = mysql_query ($query, $bd);
  23.    
  24.     if ( !$resultado_general )
  25.         die ("Error ejecutando la consulta");
  26.    
  27.     $num_filas_general = mysql_num_rows($resultado_general);
  28.    
  29.     if ($num_filas_general > 0){        // Si existe el registro
  30.         $fila_data = mysql_fetch_array($resultado_general);
  31.        
  32.         }
  33.                            
  34. ?>
  35. //aca muestro el menu
  36.  
  37.  <? menu_egresado(); ?>
  38.  
  39. //ahora tengo la imagen:
  40.  
  41. <form action="form_data_personal.php" method="post" name="form2" id="form2">
  42. <input type="image" src="imagenes/user_256.png" height="180"  width="215"  onClick="javascript:form2.submit()" />
  43.  <input readonly name="cedula" type="hidden" id="cedula"  value="<? echo $fila_data["NUM_CED_EGR"]; ?>">
  44.             </form>    
  45. </body>
  46. </html>
  47. <?
  48. }
  49. else
  50. {
  51. not_auth();
  52. }
  53. ?>

en el archivo funciones.php tengo el menu del usuario egresado, el cual a traves de una funcion lo muestro en el archivo formulario_egresado?.php


Código PHP:
Ver original
  1. function menu_egresado(){
  2.  
  3. ?>
  4. <ul id="nav">
  5.  <li><a href="formulario_egresado.php?optegresado=<?php echo $cedula;?>">Inicio</a></li>
  6.   <li><a href="#">Mi cuenta</a></li>
  7.  <li><a href="logout_egre.php">Finalizar sesion</a></li>
  8. </ul>
  9.  <?
  10. }

y mi problema es que cuando yo estoy en form_data_personal.php y hago clic en Inicio, me borra la informacion del egresado, es decir, vuelve al inicio pero no aparece la sesion, no se si mi problema este en:

<a href="formulario_egresado.php?optegresado=<?php echo $cedula;?>">

si le doy como parametro nuevamente cedula, a que se debe este problema, como puedo crear este enlace para que no me borre los datos del usuario?

Agradezco la ayuda

rolonja 16/02/2011 08:05

Respuesta: Problema con enlace en php
 
Te recomiendo que utilices variables de sesión para mantener a el usuario logueado,

por ejemplo. $_SESSION['cedula'] = $cedula;

y luego haces referencia a esta variable "super global" para mantener los datos de el alumno.

esta variable estará activa el tiempo que dure la sesión o hasta que la sesión sea destruida.

Saludos.

oscarbt 16/02/2011 08:50

Respuesta: Problema con enlace en php
 
Ok he añadido la variable a esto:

<? session_start();
require_once('funciones.php');
$_SESSION['cedula'] = $cedula;
if (isset($_SESSION['estud']))
{
?>


le he puesto lo anterior tambien a form_data_personal.php

Pero al dar clic en inicio, nuevamente me borra la sesion
Ahora me surge una duda, haciendo esto, como deberia dejar entonces mi enlace?

asi:

Código PHP:
Ver original
  1. <a href="formulario_egresado.php?optegresado=<?php echo $cedula;?>">

o como?

Eso de "y luego haces referencia a esta variable super global", que significa?

QUe pena tanta molestia, realmente he leido pero no he dado con la solución

Gracias por la ayuda

oscarbt 16/02/2011 08:56

Respuesta: Problema con enlace en php
 
[SOLUCIONADO]

Mi problema ha quedado resuleto
efectivamente el problema estaba en mi enlace

el enlace lo he dejado asi:

Código PHP:
Ver original
  1. <li> <a href="formulario_egresado.php?optegresado=<?php echo $_SESSION["cedula"];?>">Inicio</a></li>

Y efectivamente me mantiene activa la sesion del usuario

Gracias por tu ayuda

oscarbt 16/02/2011 08:58

Respuesta: Problema con enlace en php
 
Ahora una ultima pregunta, para dejar un enlace tipo submit, debo colocarle un

<form action> ?

si en en enlace le paso como parametro echo $_SESSION["cedula"];

Podria hacer consultas a mi base de datos?


La zona horaria es GMT -6. Ahora son las 06:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2024, Jelsoft Enterprises Ltd.