Páginas

Cómo corregir el mensaje "Notice: Undefined index:" en PHP

Si tenemos por ejemplo un formulario de contacto con las variables definidas así:
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$subject = $_REQUEST['subject'];
$message = $_REQUEST['message'];
$spamcheck = $_REQUEST['spamcheck'];
$error = false;
Nos aparecerá el siguiente mensaje en nuestra web: "Notice: Undefined index:" porque que estamos accediendo a un array cuyo indice no existe. Lo solucionamos de esta forma:
if (isset($_REQUEST['name'])) {
$name = $_REQUEST['name'];
} else {
$name = "";
}

if (isset($_REQUEST['email'])) {
$email = $_REQUEST['email'];
} else {
$email = "";
}

if (isset($_REQUEST['subject'])) {
$subject = $_REQUEST['subject'];
} else {
$subject = "";
}

if (isset($_REQUEST['message'])) {
$message = $_REQUEST['message'];
} else {
$message = "";
}

if (isset($_REQUEST['spamcheck'])) {
$spamcheck = $_REQUEST['spamcheck'];
} else {
$spamcheck = "";
}

58 comentarios:

  1. php_flag display_errors 1
    php_value error_reporting 7
    en .htacces

    ResponderEliminar
  2. Muchas gracias, si funcionó XP

    ResponderEliminar
  3. otra solucion es modificando la configuracoin del php en php.ini
    la cuestion es que modificar no lo se por que en un servidor linux funciona bien pero en el wamp y xamp no funcionan da el mismo error

    ResponderEliminar
  4. Cuanta menos configuración se toque mejor...
    ¡¡¡ Muchas gracias !!!!!

    ResponderEliminar
  5. Gracias por el dato .HTACCESS !!!

    Para quienes tienen problemas para crear el archivo .htaccess (debido a que no tiene nombre antes del punto) pueden usar Unlocker (freeware) y seleccionar "rename" como acción.

    ResponderEliminar
  6. Muchas GRACIAAAAAAAAAAAAAAAAAAAAAAAAS!!!!!!!!! Me sirvió un saludo hermano :D

    ResponderEliminar
  7. solution:
    If you are pretty sure about what you are doing use @.
    @$name = $_REQUEST['name'];

    ResponderEliminar
    Respuestas
    1. Otimo menin@!! Mas simple y logico imposible! :) Thanks!

      Eliminar
    2. Genial, la mejor solución

      Eliminar
    3. excelente!! sos un genio! te consulto...que funcion tiene el "@" ? muchisimas gracias!

      Eliminar
    4. Funciona, claro que funciona, pero no sabeis lo que estais haciendo en cuanto a rendimiento de vuestra aplicacion.
      El uso de @ para evitar mostrar los errores está totalmente desaconsejado por la cantidad de recursos que consume. No imagino una aplicacion toda llena de @.
      Lo que se indica en este articulo es cómo conseguir evitar esos NOTICE, todo lo demas es esconderlos para que no se vean.

      Eliminar
    5. Gracias!!! esta solución es mucho más práctica! =D

      Eliminar
  8. GRACIAS...SOLUCIONO EL PROBLEMA...

    ResponderEliminar
  9. Muchas Gracias por tu ayuda XD

    ResponderEliminar
  10. LO MEJOR Y MÁS RÁPIDO, UTILIZEN : error_reporting(E_ALL ^ E_NOTICE);

    ResponderEliminar
  11. Hola, pues a mi no me ha funcionado la solución propuesta en este blog. Voy a detallar mis resultado. Cuando el formulario se envía utilizando el metodo get, puedo ver en la barra de direcciones el query que deberia llegar al script que actua como cgi, y efectivamente puedo ver las variables y sus valores, pero cuando trato de extraerlo aparece como si estuviera vacio y aparece el error "Notice: Undefined index:..." que es de lo que trata el post, hasta donde entiendo la corrección que proponen es de asignar un valor a la variable para que no arroje el error; si por algun motivo el valor no viene en el query, es decir si $_REQUEST["variable"] existe se asigna, y sino se llena con una cadena vacia y resuelto no hay error, pero en mi caso el problema es que puedo ver los parámetros debido al método get y también puedo ver el query utilizando $_SERVER['QUERY_STRING'], pero no he podido extraerlo de $_REQUEST["variable"] ni de $_GET['variable'], asi que agradecería mucho si alguien tiene alguna idea de cual es el problema y como podría solucionarlo, he hecho esta prueba utilizando el ejemplo propuesto en la pagina de php "http://php.net/manual/es/tutorial.forms.php", y lo estoy probando en XAMPP 1.8.2 para windows.

    ResponderEliminar
  12. con las soluciones que dan, el error desaparece, pero los valores que deberia traer la query quedan vacios para esas variables que estaban mecionadas en el error...

    ResponderEliminar
  13. Disculpen alguien me podría ayudar tengo una lista desplegable que se alimenta de una base de datos, el problema es que no le he podido pasar esos parámetros para que sean la consulta de la base de datos he hecho varias cosas pero me dice ahora undefined index, que puedo hacer?

    Gracias

    ResponderEliminar
  14. Ya me estaba dando dolores de cabeza ese erro! Esto me sirvio! Gracias!

    ResponderEliminar
  15. gracias
    solvento mi error

    ResponderEliminar
  16. Excelente!! funciona de diez

    ResponderEliminar
  17. hola por favor me pueden ayudar.

    Tengo el mismo mensaje de error que indican inicialmente, he ingresado la línea de código

    error_reporting(E_ALL ^ E_NOTICE);

    y ya no aparecen los errores, pero cuando quiero ir a otros enlaces del sistema, me aparece este error:

    Notice: Undefined variable: HTTP_SESSION_VARS in C:\xampp\htdocs\Control\Menus\Marcos.php on line 3

    He leído un poco y me dice que se trata de una configuración del servidor, pues el mismo código funciona en otro computador sin problema.

    Me pueden ayudar porfa.

    Gracias

    ResponderEliminar
  18. Mil gracias amigos, no lo podía solucionar.

    ResponderEliminar
  19. Muchas gracias me sirvió de muchísimo, llevaba semanas de quebradero de cabeza intentándolo corregir yo sólo pero al final no pudé y tuve que recurrir a San-Goolge y encontré tú página y con ella la solución, de nuevo MUCHAS GRACIAS AMIGO, Dios te bendiga y te ayude...

    ResponderEliminar
  20. Estimados una solución fácil y rápida es modificar el php.ini la siguiente linea.

    display_errors = on (se cambia a off);

    ResponderEliminar
  21. solucionado muchas gracias

    ResponderEliminar
  22. EL esconder los errores con el @ o en el .httacces no soluciona el log que queda en el archivo php_error_log, por lo tanto aconsejo siempre ir dejando sus variables de la siguiente manera:
    (!empty($_POST['mi_variable'])?$_POST['mi_variable']:"")

    ResponderEliminar
  23. Muy buena explicación. Me ha sido muy útil. ¡Gracias!

    ResponderEliminar
  24. $_SESSION['usuario'] y me sigue dan do error Notice
    : Undefined index: usuario in
    C:\xampp\htdocs\PAGINA-WEB0\carritodecompra.php
    on line
    101

    ResponderEliminar
  25. y si lo tengo con post sirve igual
    cambiandole lo que tu le colocaste

    ResponderEliminar
  26. Excelente si me funciono , gracias

    ResponderEliminar
  27. muchas gracias...funciono es lo que estaba buscando...

    ResponderEliminar
  28. Permiteme felicitarte, excelente aporte

    ResponderEliminar
  29. Lo probe con el software postman y el resultado en json me sale asi:

    [
    {
    "0": "Tocofa S.A. de C.V.",
    "razon_social": "Tocofa S.A. de C.V."
    },
    {
    "0": "Tocofa S.A. de C.V.",
    "razon_social": "Tocofa S.A. de C.V."
    },
    {
    "0": "Tocofa S.A. de C.V.",
    "razon_social": "Tocofa S.A. de C.V."
    }
    ]

    a que se debera?

    ResponderEliminar