Foros del Web » Programando para Internet » PHP »

sesiones en PHP

Estas en el tema de sesiones en PHP en el foro de PHP en Foros del Web. Hola a todos. Quiero plantear un problema que tengo con un codigo que al ejecutarlo bajo el servidor web XAMPP me genera el siguiente mensaje ...
  #1 (permalink)  
Antiguo 25/03/2007, 14:08
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 1 mes
Puntos: 0
sesiones en PHP

Hola a todos. Quiero plantear un problema que tengo con un
codigo que al ejecutarlo bajo el servidor web XAMPP me
genera el siguiente mensaje de error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\Archivos de programa\xampp\htdocs\exclu\access.php:9) in D:\Archivos de programa\xampp\htdocs\exclu\access.php on line 52

El codigo es una ventana de autentificacion de un administrador para
acceder a una pagina privada mediante contraseña, creando una
variable de session .... pues no me funciona. Alguien puede decirme el
porque. Gracias.

CODIGO:
<body >
<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="540111"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: accedd.php");
}
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<div id="datos">
<input class="classdata" type="text" size="15" name="usuario">
<input class="classdata" type="password" size="15" name="contrasena">
<input class="classdata" type="submit" name="acceder" value="Accede">
</div>

</form>

</body>

El Error me lo da al enviar los datos del formulario.
  #2 (permalink)  
Antiguo 25/03/2007, 14:32
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: sesiones en PHP

El session_start() debe estar antes de cualquier salida de datos. <body > cuenta como salida y por eso el error. Y lo mismo sucede con el Header Location, este debe estar antes que cualquier salida.

Código PHP:
<?php 
session_start
();
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="540111"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
$_SESSION["autentificado"]= "SI";
header ("Location: accedd.php");
}
?>
<body >
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<div id="datos">
<input class="classdata" type="text" size="15" name="usuario">
<input class="classdata" type="password" size="15" name="contrasena">
<input class="classdata" type="submit" name="acceder" value="Accede">
</div>

</form>

</body>
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 25/03/2007, 14:32
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: sesiones en PHP

Hola miguelcubas, te sale ese error porque estas imprimiendo etiquetas html antes de session_sart().
Cita:
Iniciado por miguelcubas Ver Mensaje
CODIGO:
<body >
<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="540111"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: accedd.php");
}
Cuando se utiliza session_start(), header......
no se puede imprimir antes ninguna salida.

Código PHP:
<?
 
//vemos si el usuario y contraseña es váildo
 
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="540111"){
     
//usuario y contraseña válidos
     //defino una sesion y guardo datos
     
session_start();
     
$_SESSION["autentificado"]= "SI";
     
header ("Location: accedd.php");
 }
 
?> 
<body >

<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<div id="datos">
<input class="classdata" type="text" size="15" name="usuario">
<input class="classdata" type="password" size="15" name="contrasena">
<input class="classdata" type="submit" name="acceder" value="Accede">
</div>

</form>

</body>
Saludos
__________________

  #4 (permalink)  
Antiguo 25/03/2007, 15:41
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: sesiones en PHP

Gracias por la ayuda que me prestais tan rapida ante todo,
no me lo esperaba.

Lo puse por delante de cualquier TAG y seguia sin funcionarme,
pero claro, se me escapo, lo puse por debajo de !DOCTYPE.

Bueno, muuuchas gracias.
  #5 (permalink)  
Antiguo 25/03/2007, 15:57
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: sesiones en PHP

Acostumbrate a , como minimo, escribir toda la parte de 'dominio' del script al principio del archivo

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #6 (permalink)  
Antiguo 09/04/2007, 11:51
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Hola a todos, tengo una pregunta, no se mucho de sesiones, pero si hago un SESSION_STAR() de una sesion X, posteriormente puedo iniciar otra??, esto pregunto por el echo de utilizar varias variables de sesiones simultaneamente.

Quisiera saber como puedo crear una variable de sesion que sea unica para todas la sesiones.
  #7 (permalink)  
Antiguo 10/04/2007, 12:12
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Estuve probando y si se puede ejecutar dos sesiones simultaneamente, es solo que una no responde.

Como puedo hacer para trabajar con una variable comun para todas las sesiones???

Y una pregunta mas, Como puedo hacer que no se regrese hasta la ventana de loggearse de una persona con el boton atras sin inhabilitar el boton atras???
  #8 (permalink)  
Antiguo 14/04/2007, 12:14
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Que importancia tiene el poner nombre a la session??

SESSION_NAME('nombre');

Un amigo me dijo que no es importante, ya que cuando llame a un SESSION_START, PHP automaticamente identifica que session y en que lugar se inicia automaticamente.

Ahi es donde me entra la duda, de donde hago el SESSION_CLOSE()....

Yo aun principio tenia una SESION para los posibles usuarios que interactuan con mi sistema (CAJA, MEDICO, DIRECTOR y VISITANTE) Pero cuando me loggeaba con alguno y hacia SESSION_START para trabajar con variables, pues me di cuenta que el momento en que necesitaba usar una variable en todas la sesiones, pues me probocaba el conflicto de que ya habia un nombre de sesion iniciada y eso me impedia ejecutar una variable de sesion de otro lado. Asi que le quite el nombre a todas las sesiones y asi trabajo de maravilla, uso las variables de sesion que quiero, aunque hasta el momento no entiendo como diferencia PHP con que sesion estoy y no condundir los datos.

Como podria hacer que cuando alguien inicia sesion, automaticamente se cierre la sesion que este abierta. GRACIAS!
  #9 (permalink)  
Antiguo 14/04/2007, 12:26
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: sesiones en PHP

no se si estoy equivocado pero yo tengo entendido que para cada usuario que se loggee es una session nueva que se le asigna a ese equipo en cuestion donde trabaja ese usuario, es decir, que por cada maquina(pc) es una session diferente, lo ideal es que cada usuario cierre su session desde el equipo en que la inicio, eso lo logras por medio de un link que al hacerle click haga el $_SESSION=array(); esto para iniciar el arreglo y posteriormente session_destroy(); para destruir la session.

espero no haberte confundido, saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #10 (permalink)  
Antiguo 14/04/2007, 12:35
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Gracias por responder EITS, pero como obligo para que ese $_SESSION=array(); se ejecute cuando alguien inicia otra sesion??? Necesariamente tengo que hacerlo en la misma maquina??? EH.. pero si me logge en una maquina, puedo acaso cerrar sesion desde otra maquina??? Quede un poco confundido.

Como tengo que manejar correctamente los SESSION_CLOSE o DESTROY???
  #11 (permalink)  
Antiguo 14/04/2007, 16:13
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: sesiones en PHP

antes que nada lee esto para que entiendas un poco mas sobre las sessiones, siento que no has captado bien la esencia del uso de las sessiones.
introduccion rapida a las sesiones php
manejo de sesiones en php muy bueno el texto, lamentablemente la página tiene problemas para mostrar los ejemplos (eso hasta hoy 14/04/2007)

bien, despues de esto a responder
Cita:
Iniciado por makeitslow Ver Mensaje
Gracias por responder EITS, pero como obligo para que ese $_SESSION=array(); se ejecute cuando alguien inicia otra sesion???
no obligas cuando inicia, simplemente cuando se cierre la session limpias el arreglo
Cita:
Iniciado por makeitslow Ver Mensaje
Necesariamente tengo que hacerlo en la misma maquina???
en teoria si,
Cita:
Iniciado por makeitslow Ver Mensaje
Como tengo que manejar correctamente los SESSION_CLOSE o DESTROY???
para esta última pregunta te hago referencia a la sentencia session_destroy

saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #12 (permalink)  
Antiguo 28/05/2007, 09:08
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Hola de nuevo a todos! EITS...

Estuve ya revisando todo lo referente a sesiones, gracias por tus links....y ahora solo me surgio un problema... no se si es parte de las sesiones o parte de formularios.

Resulta que cuando loggeo a alguien, y voy avanzando por las paginas y haciendo cosas... cuando decido hacer ATRAS, ATRAS, ATRAS hasta llegar a la pagina de LOGEARSE..¿Como hago para que me vuelva a pedir LOGGIN y PASSWORD? Por ejemplo aca.... Uno se loggea... y va sumergiendose en las paginas, y si hacemos ATRAS ATRAS llegamos nuevamente que tenemos que loggearnos... o cuando regresamos a una pagina que ya cerramos con anterioridad, nos vuelve a pedir que nos registremos...

¿¿Como se hace eso??

Gracias!
  #13 (permalink)  
Antiguo 28/05/2007, 10:47
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Exclamación Re: sesiones en PHP

Hola makeitslow.

Lo que pasa con eso, es que desde ti php.ini configuras la parte de:

session_use_cookies=on;
session_only_cookies=0;
session_use_trns_id=off;

Te pido disculpas de antemanos por que sè puede variar al nombre por que no me acuerdo bien , pero seguro que lo encontraràs.

Con eso logras, que al darle atras al navegador, te diga pàgina caducada o te mande de nuevo a loguearte...

Saludos y espero te sirva!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #14 (permalink)  
Antiguo 28/05/2007, 12:39
 
Fecha de Ingreso: enero-2007
Ubicación: Cochabamba - Bolivia
Mensajes: 346
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: sesiones en PHP

Gracias Carlx... Voy a probar... pero tengo una duda, tengo por ahi botones implementados por mi que son REGRESAR, que usan el history.back(-1) para hacer atras y corregir formularios.

¿El modificar esas lineas no me afectara a eso?

Saludos!
  #15 (permalink)  
Antiguo 29/05/2007, 11:00
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Exclamación Re: sesiones en PHP

Hola makeitslow!!, la verdad no sé, nunca he utilizado esto, entonces no sé como se comporte..., espero q no te afecte.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 13:35.