Foros del Web » Programando para Internet » PHP »

Problema con session()

Estas en el tema de Problema con session() en el foro de PHP en Foros del Web. Tengo mi sistema de validacion para para mi usuario en el archivo ./modulos/mod_usua/index.php, en este archivo tengo la funcion que se encarga de vaidar si ...
  #1 (permalink)  
Antiguo 20/01/2009, 07:55
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Problema con session()

Tengo mi sistema de validacion para para mi usuario en el archivo ./modulos/mod_usua/index.php, en este archivo tengo la funcion que se encarga de vaidar si el usuario es valido o no, con datos de una bd en mysql.
Código PHP:
function loguear($txtcon,$txtusu,$sql,$dbi,$idioma_){
global 
$error,$display,$idusu,$usnom,$uspas;
include(
$idioma_);
$consul=$sql->consulta("SELECT usnickname,uspassword,usnombre FROM mark_usua WHERE usnickname='$txtusu'",$dbi);
$row=$sql->consultamatriz($consul);
   if ( 
$row[1]==$txtcon && $txtusu==$row[0]){
//este codigo me marca error, por que apareceria dentro de html.
      
$sesion = new sesion('LLAVE',0);
      
$sesion->$row[1];
      
$sesion->usunom=$row[2];
      
$sesion->usudat=$row[3];
         } else {
$display=0;
         
valido();
         
$error=$NOUSUARIO.".".$OLVIDO;
         
formulario($idioma_,$error)   ;
   }
         

Mi problema esta en que cuando el usuario es correcto quiero hacer referencia a mi clase de usuario que tiene el codigo para session_start(), pero me marca error porque el modulo se habre dentro de html. utiliza una archivo que esta dentro de ./tema/estilo1/cuerpo.html.el codigo es el siguiente:
Código HTML:
include('./tema/marco/header.html');
 ?>
<table width="20%" border="0" cellpadding="0" cellspacing="0">
  <tr valign="top" bgcolor="#101070">
    <td width="140" bgcolor="#FFFFFF"><img src="themes/SlashOcean/images/pix.gif" width="3" height="3" alt="t" /></td>
    <td colspan="2"><img src="tema/marco/imagenes/cl.gif" width="7" height="10" alt="w" /></td>
    <td width="198"><div align="right"><span id ="titder">Menu Principal</span> </div></td>
    <td colspan="2" align="right"><img src="tema/marco/imagenes/cr.gif" width="7" height="10" alt="e" /></td>
    <td width="10" align="right" bgcolor="#FFFFFF"><img src="themes/SlashOcean/images/pix.gif" width="3" height="3" alt="r" /></td>
  </tr>
  <tr valign="top" bgcolor="#101070">
    <td width="140" valign="top" bgcolor="#FFFFFF"><?php include('./tema/marco/mender.html'); ?></td>
    <td width="1" bgcolor="#101070"><div align="center" id="mender"></div></td>
    <td colspan="3" nowrap="nowrap" bgcolor="#FFFFFF" width="800"><div id="cuerpo">
    <!--codigo en php para mostrar los menus -->
      <?
//en esta parte es donde hago el include hacia el modulo, por eso me marca error, ya que se apertura dentro de codigo html.

   if (file_exists( $path_modulo )) include( $path_modulo );
   else die('Error al cargar el m&oacute;dulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
   ?>
 </div>
    <!--codigo en php para mostrar los menus --></td>
    <td width="1" bgcolor="#101070"><div align="center" id="mender"></div></td>
    <td width="10" align="right" valign="top" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr valign="top" bgcolor="#101070">
    <td height="19" rowspan="2" bgcolor="#FFFFFF">&nbsp;</td>
    <td height="0" colspan="5" bgcolor="#101070" id="mender"><div align="center" id="mender"><div align="center" id="mender"></div></td>
    <td rowspan="2" align="right" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
  <tr valign="top" bgcolor="#101070">
    <td colspan="2" bgcolor="#FFFFFF">&nbsp;</td>
    <td bgcolor="#FFFFFF">&nbsp;</td>
    <td colspan="2" align="right" bgcolor="#FFFFFF">&nbsp;</td>
  </tr>
</table>
<p>
  <?php include('./tema/marco/pie.html'); ?>
</p> 
Como le puedo para iniciar session_start(), sin que me marque error por que esta dentro de codigo html, ya que session_estar() se debe escribir antes de todo codigo html, e intentado hacer un monto de cosas pero no me ha funcionado, espero que me haya explicado bien, gracias por su ayuda.
  #2 (permalink)  
Antiguo 20/01/2009, 08:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema con session()

Siempre procesa el PHP antes que todo. Tu problema lo resuelves incluyendo el archivo al principio, antes de cualquier salida HTML. No hay porque "forzarlo" a que este en el medio, no hay necesidad.
  #3 (permalink)  
Antiguo 20/01/2009, 08:43
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Problema con session()

Ya entendi eso, el problema como mi estructura de mis pagina esta en modulos y los modulos se habren dentro de html, no he encontrado la forma de hacer que los modulos se habran fuera del html, en esta parte de codigo es donde hago la inclusion de mis modulos

Código PHP:
<div id="cuerpo">
    <!--codigo en php para mostrar los menus -->
      <?
//en esta parte es donde hago el include hacia el modulo, por eso me marca error, ya que se apertura dentro de codigo html.

   
if (file_exists$path_modulo )) include( $path_modulo );
   else die(
'Error al cargar el m&oacute;dulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
   
?>
 </div>
La estructura de mi sitio es mas o menos esta, espero que me pueda explicar bien:
modulo usuario:./modulos/mod_usua/index.php
tema:./tema/marco/cuerpo.html-->aqui esta el html donde se abren los modulos

como utilizo cuerpo.html y ahi esta embebido el php, me marca error por que session_star() se abre en medio de html.

mi idea principal es que desde ./modulos/mod_usua/index.php haya una variable global donde el usuario es correcto y dependiendo de esa variable desde y que la reciba cuerpo.html y con ello desplegar session_star() antes de todo html en ./tema/marco/cuerpo.html, pero no lo he logrado espero me haya explicado, gracias por sus ayuda
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 08:43.