Foros del Web » Programando para Internet » PHP »

PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

Estas en el tema de PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable en el foro de PHP en Foros del Web. Hola, les comento que en mi servidor todo el sitio funcionaba perfecto, lo movimos al otro servidor donde se hiba a quedar y salieron muchos ...
  #1 (permalink)  
Antiguo 13/11/2007, 06:37
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 16 años, 5 meses
Puntos: 0
PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

Hola, les comento que en mi servidor todo el sitio funcionaba perfecto, lo movimos al otro servidor donde se hiba a quedar y salieron muchos errores de variables no declaradas, Notice: Undefined variable xxx, Notice: Undefined index:xxx, Notice: Use of undefined constant xxx.


Buescando solusiones encontre que se debe usar POST y/o GET para declararlas, lo hice y no funciono, luego encontre con un isset(), ya no salian los errores.

Pero el problema es que al usar isset($_POST["variable"] o con GET dependiendo que tipo de variable sea, me esta pidiendo que TODAS las variables, o sea isset($variable) , todas incluso las que se han declarado arriba al inicio de la pagina tengan el isset lo que me parece absurdo.. lo que yo tenia entendido es que esas se utilizan solo para los GET y POST.
Por otro lado una de las diferencias que veo entre mi servidor y el servidor en el que esta alojado el sitio es que el error_reporting es 2047 y en el mio es 2039 y las register_globals yo las tengo en On y ellos en Off...
Por favor necesito que me digan si es normal que Todas las variables deban ser usadas con el isset sino me dice que no estan declaradas, uno de los problemas que tambien tengo es que no me renueva los valores al usar el isset, asi que usaba el unset() para refrescarlas, pero tampoco funciona de manera optima...
espero su respuesta
muchas gracias
  #2 (permalink)  
Antiguo 13/11/2007, 07:00
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

1.- isset() es una función cuyo objetivo es saber si una variable está definida. El concepto de "ser usado con el isset" no tiene mucho sentido. Emplea el isset() si vas a utilizar una variable que no estás seguro de si está declarada. Obviamente, la mayor parte de las veces se emplea para saber si existen variables que se han de recibir via POST,GET,COOKIEs etc, ya que las declaradas en el script ya sabes que están declaradas.

2.- Si register_globals está en "off" y tu script está diseñado para tenerlo en "on" sí que tienes un problema. La consecuencia es que, suponiendo una variable que esperas por GET llamada "edad", en tu script la empleas como $edad directamente, en cambio, con register_globals=off debes referirte a ella como $_GET['edad'], por ejemplo.

Hay dos soluciones:

a.- La mala y a ser posible a evitar: solicitar que te pongan regsiter_globals a on. Es un agujero de seguridad importante, pero te evita modificar código.
b.- Emplea las variables refiriéndote a ellas según por donde te entren. La manera más sencilla es $_GET[] $_POST[] $_COOKIE[] etc. Debes tener mucho cuidado porque puedes tener variables como el $edad de arriba por el código que no están definidas porque se refieren a una superglobal antigua. En el ejemplo de arriba, lo mejor sería, al inicio del script, cargar las variables con sus valores:

Código PHP:
$edad=$_POST['edad']; 
Y luego en el resto del código puedes seguir empleando $edad tan ricamente.
__________________
Kelpie

Última edición por Kelpie; 13/11/2007 a las 07:08 Razón: Ampliar un poco la respuesta
  #3 (permalink)  
Antiguo 13/11/2007, 07:55
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

yo me inclinaría mas por pasar todas las variables.

te dejo algunos links para que leas:

http://ar2.php.net/manual/es/security.globals.php

http://ar2.php.net/manual/es/function.isset.php
  #4 (permalink)  
Antiguo 13/11/2007, 08:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

bueno, muchas gracias por responder... te cuento lo que hice:

yo tengo estas variables al inicio del archivo usuarios.php

Código PHP:
$id_usuario = isset($_GET["id_usuario"]);
$msj = isset($_GET["msj"]);

if(
$id_usuario <> ""){
    echo 
"id_usr NO vacio: ".$id_usuario."<br>";
    
$rsUsr ObtenerUsr($id_usuario);
    
$tp mysql_fetch_array($rsUsr);

luego mas abajo en el html tengo un formulario y utilizo las variables de arriba para largar errores.

Código HTML:
<form onSubmit="return emailCheck(this.email.value)" action="nuevo_usuario.php?id_usuario=<?=$id_usuario?>" method="post" enctype="multipart/form-data" name="formulario" id="formulario"> 

....campos a completar....

Código HTML:
<? if($msj == 1){ ?>
				  <img src="imagenes/cuidado_chico.gif" width="20" height="17" border="0"/>
				 <? echo "Las contraseñas deben ser las mismas"; }elseif($msj == 2){  ?>
				  <img src="imagenes/cuidado_chico.gif" width="20" height="17" border="0"/>
				  <? echo "Debe completar todos los campos";}elseif($msj == 3){?>
				   <img src="imagenes/cuidado_chico.gif" width="20" height="17" border="0"/>
				  <? echo "Cambie su nombre de usuario porque este ya existe!";}?> 

A todo esto yo en la tabla de los usuarios tengo un usuario donde el id es 1, cuando ingreso los datos para ingresar un nuevo usuario, no se porque la variable del id_usuario tiene el valor 1 siendo que inicialmente no tiene nada... es como que la completa despues que relleno el formulario y la cuestion es que me da el echo de el if, donde se supone que debe ser igual a vacio y me muestra "id_usr NO vacio: 1" y lo mas extraño es que la variable $msj no me da error a veces y a veces me da "Notice: Undefined variable: msj in" la verdad que no entiendo que sucede... y tambien a veces me sale que $id_usuario no definido en la linea del form...

No hay otra solucion?? esta bien que le coloque
Código PHP:
$id_usuario = isset($_GET["id_usuario"]);
$msj = isset($_GET["msj"]); 
no deberia ser como vos decis

Código PHP:
$id_usuario $_GET["id_usuario"];
$msj $_GET["msj"]; 
yo probe asi tambien y me sigue dando el error por eso le puse los isset... no sera otro el problema??

muchas gracias por la respuesta!
  #5 (permalink)  
Antiguo 13/11/2007, 09:10
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

Cita:
$id_usuario = isset($_GET["id_usuario"]);
$msj = isset($_GET["msj"]);
La función isset() siempre te va a devolver un valor booleano: 1 si la variable solicitada está definida, y 0 si la variable solicitada no está definida. Por esa razón, tus variables $id_usuario y $msj siempre van a ser 1 o 0.

Para lo que tú necesitas debes hacer esto:

Código PHP:
if(isset($_GET['id_usuario'] && !empty($_GET['id_usuario']){
    
$id_usuario $_GET['id_usuario'];
}else{
    
$id_usuario "algun valor por defecto";
}

if(isset(
$_GET['msj'] && !empty($_GET['msj']){
    
$msj$_GET['msj'];
}else{
    
$msj"algun valor por defecto";

__________________
El conocimiento es libre: Movimiento por la Devolución
  #6 (permalink)  
Antiguo 13/11/2007, 10:29
 
Fecha de Ingreso: noviembre-2007
Mensajes: 15
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

muchisimas gracias!! sip eso es lo que se hace

Muchas Gracias por orientarme!
  #7 (permalink)  
Antiguo 13/11/2007, 14:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: PROBLEMA CON Notice: Undefined index Y Notice: Undefined variable

Tambien si quieres mantener el codigo como lo tenias puedes utilizar esto:
Código PHP:
error_reporting(0); 
En la primera linea de cada pagina.

Los notice son, como dice su nombre, advertencias. Pero estas advertencias son las mas pequeñas dentro de las que pueden salirte.

Notice: 1
Warning: 2
Fatal: 3

Por ponerle algun valor.

Por lo general avisan que una variable no esta definida o cuando pones $_POST[campo] sin comillas te avisa que el PHP asume que campo se interpretara como 'campo'.


Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 20:47.