Foros del Web » Programando para Internet » PHP »

Salida de Logout en REQUIRE

Estas en el tema de Salida de Logout en REQUIRE en el foro de PHP en Foros del Web. Hola amigos de Foros del web, tengo un sitio web con REQUIRE E INCLUDES o sea : REQUIRE1 = La cabecera REQUIRE2 = Menu derecho ...
  #1 (permalink)  
Antiguo 03/05/2010, 20:05
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Pregunta Salida de Logout en REQUIRE

Hola amigos de Foros del web, tengo un sitio web con REQUIRE E INCLUDES o sea :

REQUIRE1 = La cabecera

REQUIRE2 = Menu derecho

REQUIRE3= Pie

index: contiene estos 3 Requires mas un include que consulta la DB en donde se muestra la info textos imagenes etc...

Ahora hice un administardor de contenidos con registracion todo anda bien hasta que hace la salida LOGOUT.

Me da el ya conocido ERROR:

Warning: Cannot modify header information - headers already sent by..........


PERO SI PONGO ESTE LOGIN CON LOGOUT EN UN PHP APARTE DE TODO, ENTRA Y FUNCIONA!!!! Y A LA VEZ SALE SIN EL ERROR, Y VA A LA PAGINA QUE LE INDIQUÉ DEL LOGOUT QUE ES INDEX.PHP, FUNCIONA CORRECTAMENTE !!

Estoy seguro que es algo de rutas, para mi el Require repite HEADER , pero ya me canse de probar todo jaja bueno espero una mano saludos y gracias de antemano.

Última edición por christianphp; 03/05/2010 a las 23:43
  #2 (permalink)  
Antiguo 04/05/2010, 05:26
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

Si no pones código es más difícil ayudarte... de todas formas ese error es típico de poner session_start() después de una salida de código HTML, o de usar setcookie después de una salida de código HTML.


Un saludo
  #3 (permalink)  
Antiguo 04/05/2010, 09:28
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
Si no pones código es más difícil ayudarte... de todas formas ese error es típico de poner session_start() después de una salida de código HTML, o de usar setcookie después de una salida de código HTML.


Un saludo
Hola amigo gracias por responderme si pongo codigo es muy largo imaginate lleva requires, me sirvio puse el Login arriba de todo de la cabecera y funciona exelentemente con su LOGOUT y no tira error pero lo que pasa es que antes de loguearte a la web no se ve nada o sea sale solo LOGIN CONTRASEÑA.


ESTE ES EL CODE DEL LOGIN
Código:
<?PHP    
session_start();
function auth($user, $pass){
    $result = -1;

    if((trim($user) != "") && (trim($pass) != "")){
// make sure that the script has permission to read this file!
$data = file("admin/data/users.db.php");
    
// iterate through file
foreach ($data as $line){
    
    $arr = explode("|", $line);
    
    // if username matches
    // test password
    if($arr[2] == $user){

 // if match, user/pass combination is correct
// return 1
if($arr[3] == $pass){
    $result = 1;
    break;
}else{
    // otherwise return 0
    $result = 0;
    break;
}
   }
}
    }
    
    // return value
    return $result;
}

// Check if Sessions have exist or else see if any var's are posted
if(!isset($_SESSION["SESSION_UNAME"]) && !isset($_SESSION["SESSION_UPASS"])){
    $f_user = $_POST['f_user'];
    $f_pass = md5($_POST['f_pass']);
}else{
    $f_user = $_SESSION["SESSION_UNAME"];
    $f_pass = $_SESSION["SESSION_UPASS"];
}

if($_GET['logout'] == "true"){
    $f_user = "";
    $f_pass = "";
    session_unset();
    session_destroy();
    header("Location: ?");
}

if(auth($f_user, $f_pass) == 1){
    $_SESSION["SESSION_UNAME"] = $f_user;
    $_SESSION["SESSION_UPASS"] = $f_pass;
}else{
echo <<<HTML
<html>
<head>
<title>Login</title>
</head>
<body>
<center>
<table border="0" cellspacing="5" cellpadding="5">
<form action="" method="POST">
<tr>
<td>Username</td>
<td><input type="text" size="20" name="f_user"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" size="20" name="f_pass"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="LogIn">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
HTML;
exit();
}
?>
Y ASI LA PARTE DEL LOGOUT QUE INCLUDE AL CODIGO ANTERIOR:

Código:
<?PHP include("auth.inc.php"); ?>
<a href="?logout=true">Logout</a>

Mi pregunta es como puedo poner ese LOGIN EN EL MENU sin que restrinja la web...
  #4 (permalink)  
Antiguo 04/05/2010, 09:52
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

Antes de que incluyas el código ese, en el include("auth.inc.php");, hay algo más arriba de eso en ese script?

Un saludo
  #5 (permalink)  
Antiguo 04/05/2010, 11:00
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
Antes de que incluyas el código ese, en el include("auth.inc.php");, hay algo más arriba de eso en ese script?

Un saludo
Hola :

<?PHP include("auth.inc.php"); ?>
<a href="?logout=true">Logout</a>


Ese codigo es un PHP que se llama : laprueba.php

Y no tiene mas nada dentro ni arriba ni abajo, anteriormentele puse unas tablas con datos que aparecen cuando se loguean y funciona bien, así:

Código:
<?PHP include("auth.inc.php"); ?>
<a href="?logout=true">Logout</a>
<style type="text/css">
<!--
body {
	background-color: #000000;
}
-->
</style><div align="center">
  <table width="187" border="0" cellspacing="3" cellpadding="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Bienvenido: Usuario</td>
    </tr>
    <tr>
      <td>Post: 345</td>
    </tr>
    <tr>
      <td>Cat: Admin</td>
    </tr>
    <tr>
      <td>etc etc</td>
    </tr>
  </table>
</div>
EL problema ocurre porque ese script me oculta toda la web y lo que quiero es que se vea.

En si donde pones ese codigo de ahí para abajo oculta todo, salvo que te loguees y ahí si muestra todo el sitio, cuando lo pongo en el menu me muestra solo la cabecera ( por lo meno algo ) pero al SALIR LOGOUT SALE PERO me tira el error:

Warning: Cannot modify header information - headers already sent by (output started at D:\AppServ\www\awy\sitio\index.php:2) in D:\AppServ\www\awy\sitio\auth.inc.php on line 51

la 51 es del logout donde sale al index: ------------) header("Location: index.php");


Muchas gracias Heli0s espero alguna ayudita

Última edición por christianphp; 04/05/2010 a las 11:18 Razón: CAMBIOS ERROR
  #6 (permalink)  
Antiguo 04/05/2010, 11:03
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

A ver... me estás poniendo muchos códigos de páginas diferentes y no se que relación tienen, quiero que me pongas el código únicamente de la página que da error, y que me indiques que nombre tiene, y después de ponerme ese código, me pones los códigos de las páginas que incluyes, indicando me también el nombre para saber identificarlos, y si es posible, indica me en que linea da el error.

Un saludo
  #7 (permalink)  
Antiguo 04/05/2010, 11:15
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
A ver... me estás poniendo muchos códigos de páginas diferentes y no se que relación tienen, quiero que me pongas el código únicamente de la página que da error, y que me indiques que nombre tiene, y después de ponerme ese código, me pones los códigos de las páginas que incluyes, indicando me también el nombre para saber identificarlos, y si es posible, indica me en que linea da el error.

Un saludo
si ahí actualice
  #8 (permalink)  
Antiguo 04/05/2010, 11:21
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

No veo ningun header("location: index.php"); por lo tanto creo que aún falta que me muestres código, de todos modos el problema es que no puede haber ninguna salida en pantalla antes de la función header, debe estar antes que cualquier etiqueta HTML.

Un saludo
  #9 (permalink)  
Antiguo 04/05/2010, 11:31
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
No veo ningun header("location: index.php"); por lo tanto creo que aún falta que me muestres código, de todos modos el problema es que no puede haber ninguna salida en pantalla antes de la función header, debe estar antes que cualquier etiqueta HTML.

Un saludo
Si perdon que lo puse mal

En el codigo del LOGIN es este que sale con: index.php y es ahí donde me tira el error de esa linea la 51

Código:
<?PHP
session_start();
function auth($user, $pass){
    $result = -1;

    if((trim($user) != "") && (trim($pass) != "")){
// make sure that the script has permission to read this file!
$data = file("admin/data/users.db.php");
    
// iterate through file
foreach ($data as $line){
    
    $arr = explode("|", $line);
    
    // if username matches
    // test password
    if($arr[2] == $user){

 // if match, user/pass combination is correct
// return 1
if($arr[3] == $pass){
    $result = 1;
    break;
}else{
    // otherwise return 0
    $result = 0;
    break;
}
   }
}
    }
    
    // return value
    return $result;
}

// Check if Sessions have exist or else see if any var's are posted
if(!isset($_SESSION["SESSION_UNAME"]) && !isset($_SESSION["SESSION_UPASS"])){
    $f_user = $_POST['f_user'];
    $f_pass = md5($_POST['f_pass']);
}else{
    $f_user = $_SESSION["SESSION_UNAME"];
    $f_pass = $_SESSION["SESSION_UPASS"];
}

if($_GET['logout'] == "true"){
    $f_user = "";
    $f_pass = "";
    session_unset();
    session_destroy();
    header("Location: index.php");
}

if(auth($f_user, $f_pass) == 1){
    $_SESSION["SESSION_UNAME"] = $f_user;
    $_SESSION["SESSION_UPASS"] = $f_pass;
}else{
echo <<<HTML
<html>
<head>
<title>Login</title>
</head>
<body>
<center>
<table border="0" cellspacing="5" cellpadding="5">
<form action="" method="POST">
<tr>
<td>Username</td>
<td><input type="text" size="20" name="f_user"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" size="20" name="f_pass"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="LogIn">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
HTML;
exit();
}
?>
  #10 (permalink)  
Antiguo 04/05/2010, 11:42
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

Ese código que me has puesto, accedes directamente a el? o lo usas mediante un include?

Un saludo
  #11 (permalink)  
Antiguo 04/05/2010, 11:51
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
Ese código que me has puesto, accedes directamente a el? o lo usas mediante un include?

Un saludo
Claro ese es el auth.inc.php donde me tira el error en la linea 51 , y lo uso con un include:

<?PHP include("auth.inc.php"); ?>

Ese Include esta dentro de laprueba.php y a la vez laprueba.php esta dentro del menu del sitio y ese menu esta con require_once en el index.php

saludos muchas gracias por tu tiempo!
  #12 (permalink)  
Antiguo 04/05/2010, 11:52
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

Enseñame el código del menu, donde incluyes a "laprueba.php"

Un saludo
  #13 (permalink)  
Antiguo 04/05/2010, 12:01
Avatar de christianphp  
Fecha de Ingreso: mayo-2010
Ubicación: Rosario
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 2
De acuerdo Respuesta: Salida de Logout en REQUIRE

Cita:
Iniciado por Heli0s Ver Mensaje
Enseñame el código del menu, donde incluyes a "laprueba.php"

Un saludo
Esta medio desprolijo y los links van con css los tengo en desarrollo aparte pero el codigo que estoy probando es este: donde está incluido laprueba.php

Código:
<?PHP include("laprueba.php"); ?>
<style type="text/css">
<!--
.Estilo1 {color: #FFFFFF}
-->
</style>
<table width="170" border="0" cellspacing="0">
  <tr>
    <td valign="top"></td>
  </tr>
  <tr>
    <td valign="top"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="3">
      <tr>
        <td width="238">&nbsp;</td>
        <td width="18" rowspan="4">&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>      </tr>
      <tr>
        <td colspan="2"><a href="registrate.php" target="_self">Registrarme</a></td>
      </tr>
    </table></td>
  </tr>
</table>

Última edición por christianphp; 04/05/2010 a las 12:03 Razón: me confundi
  #14 (permalink)  
Antiguo 04/05/2010, 12:02
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Salida de Logout en REQUIRE

Quería que me mostrases todo el código, no desde el include, hay algo antes del include? si es así ese es el fallo, no puedes usar la función header después de haber escrito HTML.

Un saludo

Etiquetas: logout, require, salida
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 22:30.