PDA

Ver la Versión Completa : Error en la creacion de sessions


RainFall
29-07-2004, 16:58:27
hola amigos



<?php
session_start();
session_register("usuario");
$usuario="lsl";
?>
<html>
<body>
<form action="pagina2.php">
<input type="HIDDEN"
NAME="<?php echo session_name()?>"
VALUE="<?php echo session_id()?>">
<input type="submit" name="boton">
</form>

</body>
</html>

este codigo funciona en algunos internet explorer y en otros no generando un error:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\archivos de programa\apache group\apache\htdocs\sessions\pag1.php:2) in c:\archivos de programa\apache group\apache\htdocs\sessions\pag1.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\archivos de programa\apache group\apache\htdocs\sessions\pag1.php:2) in c:\archivos de programa\apache group\apache\htdocs\sessions\pag1.php on line 2



Agradesco su Colaboracion.

roman
29-07-2004, 21:24:13
Pues es muy raro. Este error no debería tener que ver nada con el navegador. De hecho ningún error que genere php tiene que ver con el navegador ya que se produce del lado del servidor y no del cliente (el navegador).

A juzgar por tu código no parece que hagas nada mal. Sólo asegúrate que no hay absolutamente nada antes de la etiqueta inicial <?php, ni siquiera espacios o líneas en blanco.

// Saludos

salvica
30-07-2004, 11:46:42
Creo que antes de registrar una variable de sesión, debes de inicializarla.
Intenta cambiar el código a:

session_start();
$usuario = "lsl";
session_register("usuario");

Por lo menos, yo lo hago así y no me da problemas
Saludos

kayetano
02-08-2004, 12:17:54
Hola

Para iniciar una session debes hacerlo al principio, sin haber mostrado nada en el nvaegador, aunque el error que describes es un poco sorprendente mira si has dejado espacios delante de "<?" o lineas en blanco o algo por el estilo.

Lo único que se me ocurre para lo que te pasa es que un navegador carge desde la cache y el otro no.

jachguate
02-08-2004, 19:05:43
Lo único que se me ocurre para lo que te pasa es que un navegador carge desde la cache y el otro no.

Si uno de los navegadores cargara del cache... el servidor no ejecutaría (para esa carga) ningún código php... :rolleyes:

Hasta luego.

;)

kayetano
03-08-2004, 08:20:28
Hola

No entiendo tu respuesta jachguate.
Yo me refiero a que si en un navegador le da error y en otro no, es posible que uno carge desde la cache una versión que no de el error y el otro navegador no. Pienso yo, aunque lo veo muy estraño.
Ignoro el significado de tu respuesta, pero la verdad ultimamente te veo muy quisquilloso.

jachguate
03-08-2004, 09:23:52
No entiendo tu respuesta jachguate.


Hola kayetano.

Yo me refiero a que si en un navegador le da error y en otro no, es posible que uno carge desde la cache una versión que no de el error y el otro navegador no. Pienso yo, aunque lo veo muy estraño.
Habrá que saber si alguna vez el script funcionó sin errores... de lo contrario sería imposible que hubiera una copia en cache. De cualquier forma a lo que me refería, es que al existir en cache... nunca se generaría el código php del servidor... con lo que, para efectos de solucionarlo... no tiene relevancia.

Ignoro el significado de tu respuesta, pero la verdad ultimamente te veo muy quisquilloso.

No es nada personal... regularmente cuestiono los puntos que me parece que son ambiguos o pueden dar lugar a confusiones... aunque respeto siempre tus respuestas (como las de todos) y valoro en mucho tu desinteresada participación en los foros (como las de todos los que participan respondiendo).

Si nos hemos encontrado en esta situación mas de una vez..... supongo que será una simple casualidad.... no te enojes, que al final, lo que todos pretendemos, es que se resuelva la cuestión, y quede un historial de respuestas claras, desde el punto de vista de la mayoría, (incluyendo el tuyo y el mio).

Hasta luego.

;)

roman
03-08-2004, 09:27:27
Lo que dice jachguate yo lo entiendo así: un mensaje de error como los que se indican se produce del lado del servidor de manera que no hay forma de que el navegador mismo presente tal mensaje sino se generó previamente en el servidor.

Sin embargo, aunque parezca contradictorio, estoy de acuerdo con kayetano en este punto porque si en un momento dado el servidor genera el error, tal mensaje aparece al navegador como un texto cualquiera de manera que, en una posterior carga desde el caché, se carga con todo y el texto del error. Aunque, claro está, la segunda vez tal texto no lo produce el servidor sino que sale del caché.

El punto fundamental aquí es que necesariamente el error tuvo que generarse inicialmente en el servidor por lo que- y pongo mi mano en el fuego por esto -no es posible que en unos navegadores se produzca y en otros no.

La única forma en que veo que algo así pueda parecer que sucede es, como dice kayetano (creo), que se origina el error por espacios en blanco antes del envío de headers y después, aun habiendo modificado el script, el navegador no hace la petición al servidor sino que carga del caché, el cuál aún contiene el texto del mensaje de error.

// Saludos

jachguate
03-08-2004, 09:35:04
Habrá que saber si alguna vez el script funcionó sin errores... de lo contrario sería imposible que hubiera una copia en cache

si en un momento dado el servidor genera el error, tal mensaje aparece al navegador como un texto cualquiera de manera que, en una posterior carga desde el caché, se carga con todo y el texto del error. Aunque, claro está, la segunda vez tal texto no lo produce el servidor sino que sale del caché.

ups.. román.. tenes toda la razón.. :o :o

La situación puede darse en ambas vias. Que la página sin error esté almacenada en el cache, o que la página con error esté almacenada en el cache... no me habia percatado de ello.

El punto fundamental aquí es que necesariamente el error tuvo que generarse inicialmente en el servidor por lo que- y pongo mi mano en el fuego por esto -no es posible que en unos navegadores se produzca y en otros no.
Cuando sea grande.. quiero aprender a decir las cosas como vos... :D :D

Hasta luego.

;)