Foros del Web » Programando para Internet » PHP »

IIS>>Apache

Estas en el tema de IIS>>Apache en el foro de PHP en Foros del Web. Ninguno de estos errores me aparecio con php en Apache, pero en IIS si. Alguna idea. Tengo este error: Notice: Undefined index: check in C:XXXX/access.php ...
  #1 (permalink)  
Antiguo 25/03/2004, 18:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 20 años, 5 meses
Puntos: 0
IIS>>Apache

Ninguno de estos errores me aparecio con php en Apache, pero en IIS si. Alguna idea.
Tengo este error:

Notice: Undefined index: check in C:XXXX/access.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:XXXX/access.php:3) in C:XXXX/access.php on line 5

Utilizo session_start() y session_register('check'); $_SESSION['check']="s"; para iniciar si user y pass son correctos.

Y esto: "<?php
session_start();
if($_SESSION['check'] != "s")
{
header("Location:index.php");
exit();
}
?>"
en cada página.

Gracias de antemano.
  #2 (permalink)  
Antiguo 25/03/2004, 21:04
Avatar de alhuey40  
Fecha de Ingreso: diciembre-2002
Ubicación: sinaloa, mx
Mensajes: 37
Antigüedad: 21 años, 4 meses
Puntos: 0
mira sobre los NOTICE que te salen es porque cuando lo instalas para el IIS se configura por default que te muestre todo slos erroees, warnings y notices, cossas que pueden ser muy tontas como por ejemplo que declares

Código PHP:
if ($_GET['algo']) 
y ese parametro es obvio que no todo el tiempo lo recibves pero te marca un NOTICE

checa en el PHP.INI y verifica estas opciones

Código:
error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for notices
;
;error_reporting  = E_ALL; display all errors, warnings and notices
el que viene activo es el ultimo, trata de coemntar ese y poner activo el que dice E_ALL & ~E_NOTICE


y sobre el WARNING que senalas es porque estas mandando algo a escribir antes de una instruccion como esta

Código PHP:
header('Location: algo.php'); 
lo que pudes hacer es verificar que no tengas ni una sola linea con espacio antes de esa ó si estas incluyendo algun archivo con include o require, que no tengas espacio, pero lo que tambien puedes hacer y es lo mas sencillo es que al inicio pongas una instruccion ob_start(); con la cual se hace un buffer, y bueno te elimina ese molesto warning, puedes obneter mas informacion en http://mx2.php.net/manual/en/function.ob-start.php


saludos y espero que te haya servido de algo

Última edición por alhuey40; 25/03/2004 a las 21:06
  #3 (permalink)  
Antiguo 26/03/2004, 17:42
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 20 años, 5 meses
Puntos: 0
ok, peeero

Esta bien todo eso si el server es mio y pudiera modificar el php.ini a mi antojo, pero es un host, no creo que vayan a modificar el php.ini por mí. Quisiera saber por qué aparecen y como hago para evitar esto?. Los Notice(linea3) y Warning(linea5) son con respecto al access.php que es este:

<?php
session_start();
if($_SESSION['check'] != "s")
{
header("Location:index.php");
exit();
}
  #4 (permalink)  
Antiguo 26/03/2004, 22:10
Avatar de alhuey40  
Fecha de Ingreso: diciembre-2002
Ubicación: sinaloa, mx
Mensajes: 37
Antigüedad: 21 años, 4 meses
Puntos: 0
ok mira el WARNING lo puedes liminar con lo que ya te habia dicho, pero aqui te va de nuevo...

Código PHP:

<?php
session_start
();
ob_start(); // eliminas el WARNING
if (isset($_SESSION['check'])) // eliminas el NOTICE
  
{
    if(
$_SESSION['check'] != "s")
      {
        
header("Location:index.php");
        exit();
     }
  }
?>
espero aque te sirva de algo... saludos
  #5 (permalink)  
Antiguo 27/03/2004, 15:30
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 20 años, 5 meses
Puntos: 0
Un ultimo detalle

Muchas gracias Luis, tengo ahora esto utilizando los cambios que me distes:

Notice: A session had already been started - ignoring session_start() in

C:\xxxx\access.php on line 2

el access.php es este:

<?php
session_start();
ob_start(); // eliminas el WARNING
if (isset($_SESSION['check'])) // eliminas el NOTICE
{
if($_SESSION['check'] != "s")
{
header("Location:index.php");
exit();
}
}
?>

y lo tengo agregado de primero y sin espacios en las paginas.
  #6 (permalink)  
Antiguo 28/03/2004, 01:30
Avatar de alhuey40  
Fecha de Ingreso: diciembre-2002
Ubicación: sinaloa, mx
Mensajes: 37
Antigüedad: 21 años, 4 meses
Puntos: 0
y este archivo lo incluyes en otro????



lo que parece ser es que estes incluyendo esste archivo en otro donde estes utilizando session_start(), o sea que se esa5ta escribiendo doble...

verifica, si estas incluyendo este archivo access.php en otro, verifica que en el otro archivo no tengas el session_start()

esa instruccion debe aparecer una vez por pagina donde utilices sesiones,... cuando haces un include("file.php"), has de cuenta como si estuvieras escriendo el contenido del archivo donde lo incluyes, asi que trata de cuidar eso...

saludos,
  #7 (permalink)  
Antiguo 28/03/2004, 06:13
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
mira, quizas la mejor manera de limitar los errores es utilizar la funcion error_reporting();
http://es2.php.net/error_reporting

error_reporting (E_ERROR | E_WARNING | E_PARSE);
esto te quita las notices,

y en cuanto a este aviso:
Warning: Cannot modify header information - headers already sent by (output started at C:XXXX/access.php:3) in C:XXXX/access.php on line 5

lo que te dice esque tienes una salida http, en la linea 5 del acces.php

lo mas frecuente es que tienes un espacio o salto de linea despues o antes de los tags php <? ?>, revisa que no tengas nada antes y despues de esos tags

Y en cuanto a usar ob_start(), lo que hace es buferizar la salida de la aplicacion, y por ende consume recursos del servidor inutiomente, se deberia usar cuado sea necesario.

Si depuras tus scripts para que no haya salidas a las cabeceras antes de que tu no quieras, optimizas tus aplicaciones sin gastar recursos inutilmente.


saludos
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 05:19.