Cita:
Iniciado por j0s3bdn
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at e:\www\jueves\pagina-php\registro1.php:6) in e:\www\jueves\pagina-php\registro1.php on line 49
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at e:\www\jueves\pagina-php\registro1.php:6) in e:\www\jueves\pagina-php\registro1.php on line 49
me da este error al guardar el nombre del usuario en una sesion! gracias x vuestros aportes! como puedo solucionarlo? gracias!
como dijo iviamontes, cuando declaras session_start(); abres las variables de sesión de PHP, estas variables se inicializan antes de mostrar la página, por lo tanto si cambias el cabezal de la página es que la página ya ha comenzado a generarse, cuando muestras texto, ya sea por que usas un echo() o escribes código html PHP convierte el cabezal a texto y por lo tanto ya no podrás iniciar sesiones.
en otras palabras esto no funciona: ya que al poner texto indicas que la página debe empezar a generarse.
esto tampoco funciona: ya que tambien si imprimes con PHP se genera la página como html.
este es un error muy común: al poner un espacio antes de abrir el tag de PHP también envías texto (un salto de linea, por lo tanto también genera la página.
este caso si funcionaría: ya que las instrucciones de PHP que no muestren contenido en la página no envían cabezales
sin embargo esta tampoco funciona: ya que al cometer un error de division de 0 aparece un mensaje en pantalla, al mostrar un mensaje es como poner un echo (lo mismo ocurre con die("error");)
tampoco puedes iniciar sesiones si tu mismo cambias el cabezal!: la razón es obvia XD
también algunas instrucciones de php para generar archivos como imágenes, pdf, excel, etc cambian automáticamente el cabezal por lo tanto también tendrás error: en este caso el cabezal se envía como "imagen/png"
y tampoco puedes iniciar la sesión 2 veces:
para evitar estas explicaciones la gente simplemente opta por no poner nada antes de <? session_start(); sin embargo esto es un mito informático, puedes poner todo lo que quieras antes mientras no muestres nada.