Foros del Web » Programando para Internet » PHP »

Pagina con validacion de usuarios en un DIV

Estas en el tema de Pagina con validacion de usuarios en un DIV en el foro de PHP en Foros del Web. Buenas noches de nuevo os vuelvo a pedir ayuda ya que llevo dos dias intentando solucionar este problema y ya no se como hacerlo. Os ...
  #1 (permalink)  
Antiguo 13/10/2010, 16:07
 
Fecha de Ingreso: agosto-2005
Mensajes: 24
Antigüedad: 18 años, 8 meses
Puntos: 0
Pagina con validacion de usuarios en un DIV

Buenas noches de nuevo os vuelvo a pedir ayuda ya que llevo dos dias intentando solucionar este problema y ya no se como hacerlo.
Os agradezco de antemano vuestro tiempo

Estoy realizando una web donde hay 5 apartados abiertos al publico y un apartado solo para usuarios registrados.
La web la estoy haciendo en PHP, he creado varios div.
Div de Botones(link)
Div de Contenido (donde en funcion del link selecionado muestro la pagina por include)
Div Login Usuario.

por separado la pagina de usuario Login, me funciona.
los apartados de contacto, noticias, quienes somos, etc, tambien funcionan bien.

El problema lo tengo en el div de Login ya que me aparece el siguiente mensaje de error.

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/midominio/main.php:12) in /usr/home/midominio/acceso.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/midominio/main.php:12) in /usr/home/midominio/acceso.php on line 45

Como comento si las paginas las utilizo por separado me funcionan perfectamente, pero no se porque al incluir en main, me aparece este error.

Codigo Main.php

Código PHP:
<?php
$link
=$_GET['link'];
?> 
<html>

<head>

<title>Sol's España</title>

<LINK href="../kapi.css" type=text/css rel=stylesheet>


<style type="text/css">
<!--
#DivUsr {
    position:absolute;
    left:853px;
    top:29px;
    width:150px;
    height:345px;
    z-index:4;
}
-->
</style>
</head>

<body>

<div id="contingut" style="position:absolute; width:650px; height:420px; z-index:1; left: 155px; top: 144px; visibility: visible; border: 1px none #000000;">

<?php

  
if (!isset($link)) $link=2;

  if (
$link==1) include ("../quienessomos.html");

  if (
$link==2) include ("noticias.php");

  if (
$link==3) include ("localizacion.html");

  if (
$link==4) include ("contacto.php");

  if (
$link==5) include ("catalogo.php");

  if (
$link==6) include ("tienda.php");


?>
</div>
<div id="navegacio" style="position:absolute; width:550px; height:80px; z-index:1; left: 156px; top: 59px; visibility: visible; border: 1px none #000000;">
</div>
<div id="DivUsr">
<?php
  
include("acceso.php");
?>
</div>
<table width="1006" border="1">
  <tr>
    <td width="287"><a href="../sols/main.php?link=1">Quienes Somos </a></td>
    <td width="150"><a href="../sols/main.php?link=2">Noticias</a></td>
    <td width="220"><a href="../sols/main.php?link=3">Localizacion</a></td>
    <td width="167"><a href="../sols/main.php?link=4">Contacto</a></td>
    <td width="148"><p><a href="../sols/main.php?link=5">Catalogo</a></p>    </td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
</body>

</html>
Codigo acceso.php

Código PHP:
<?php 
    session_start
(); 
    include(
'acceso_db.php'); 
    if(empty(
$_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías  
        
if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario 
            // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos 
            
if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) { 
                echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"
            }else { 
                
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
                
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']); 
                
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
                
//$usuario_clave = md5($usuario_clave); 
                // comprobamos que los datos ingresados en el formulario coincidan con los de la BD 
                
$sql mysql_query("SELECT ID, usuario, pass, Grupo, Codcli FROM Usuarios WHERE usuario ='".$usuario_nombre."' AND pass='".$usuario_clave."'"); 
                if(
$row mysql_fetch_array($sql)) { 
                    
$_SESSION['usuario_id'] = $row['ID']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id 
                    
$_SESSION['usuario_nombre'] = $row["usuario"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre 
?> 
                    <script type="text/javascript"> 
                        var pagina = "paginarestringida.php" <!-- Redirigimos al index o la página que se desee --> 
                        function redireccionar() { 
                            location.href = pagina 
                        } 
                        setTimeout ("redireccionar()", 1000); 
                    </script> 
<?php 
                
}else { 
                    echo 
"Los datos ingresados no están registrados en nuestra BD. <a href='javascript:history.back();'>Reintentar</a>"
                } 
            } 
        }else { 
?> 
        <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
            <label>Usuario:</label><br /> 
            <input type="text" name="usuario_nombre" /><br /> 
            <label>Contraseña:</label><br /> 
            <input type="password" name="usuario_clave" /><br /> 
            <input type="submit" name="enviar" value="Ok" /> 
        </form> 
<?php 
        

    }else { 
        
// si las variables de sesión no están vacías redirigimos al index (o a la página que se desee) 
        
header("Location: index.php"); 
    } 
?>
¿alguien me podria echar una mano ?
gracias
  #2 (permalink)  
Antiguo 13/10/2010, 16:37
 
Fecha de Ingreso: noviembre-2004
Mensajes: 32
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Pagina con validacion de usuarios en un DIV

Hola tremendu,

La solución para tu problema sería cambiar la ubicación de session_start() al archivo main.php. Lo importante realmente es siempre colocar dicha función antes de cualquier otra cosa.

El comienzo de main.php debería quedar así:

Código PHP:
<?php 
session_start
();
$link=$_GET['link']; 
?>  
<html> 
<head> 
<title>Sol's España</title> 

 ...
Por cierto, no olvides que al repetir la creación de las sesiones volverá a lanzar un error, session_start debe ser utilizado una vez por página.

Saludos!

Última edición por Umberto; 13/10/2010 a las 16:42 Razón: "Por cierto"
  #3 (permalink)  
Antiguo 14/10/2010, 03:29
 
Fecha de Ingreso: agosto-2005
Mensajes: 24
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Pagina con validacion de usuarios en un DIV

Cita:
Iniciado por Umberto Ver Mensaje
Hola tremendu,

La solución para tu problema sería cambiar la ubicación de session_start() al archivo main.php. Lo importante realmente es siempre colocar dicha función antes de cualquier otra cosa.

El comienzo de main.php debería quedar así:

Código PHP:
<?php 
session_start
();
$link=$_GET['link']; 
?>  
<html> 
<head> 
<title>Sol's España</title> 

 ...
Por cierto, no olvides que al repetir la creación de las sesiones volverá a lanzar un error, session_start debe ser utilizado una vez por página.

Saludos!
Hola Umberto, voy a provar tal y como me dices, te comento luego el resultado.
Una pregunta, si inicio la sesion en el Main, al acceder a la pagina restringida mantiene las variables de sesion ?

gracias!!
  #4 (permalink)  
Antiguo 20/10/2010, 08:07
 
Fecha de Ingreso: noviembre-2004
Mensajes: 32
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Pagina con validacion de usuarios en un DIV

Creo que siempre es necesario mantener el session_start() antes de todo, incluso para verificar si existen las sesiones. Por esto te recomiendo que sigas haciendo tu página modular.

Saludos!

Etiquetas: 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 16:19.