martedì 1 marzo 2016

Come far sparire l'errore Undefined index (PHP)

Mi sono appena rimesso a programmare in php dopo tanti anni di pausa, ed eccomi subito bloccato con l'errore: Undefined index.

In realtà questo non è un vero e proprio errore, ma una notizia/notifica, infatti il messaggio che appare a video è:

Notice: Undefined index: url in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\cartellasito\pagina.php on line 7

Nello specifico l'errore mi è venuto fuori quando ho provato a settare una variabile con un valore passato da una form (metodo POST, ma anche col metodo GET è lo stesso).
Finchè passi un valore alla variabile, tutto bene, ma appena non gli passi niente, ecco che spunta la notifica.

La stringa che da errore è: $variabile=$_POST['variabile'];

Ora, per risolvere il problema via codice si potrebbe fare così:
 if (isset($_POST['url'])) $variabile=$_POST['variabile'];

o, se si tratta di una variabile passata via url:
 if (isset($_GET['url'])) $variabile=$_GET['variabile'];

Ovviamente si può applicare anche al generico metodo REQUEST:
if (isset($_REQUEST['url'])) $variabile=$_REQUEST['variabile'];

Questo metodo però, comporta di dover agire su ogni variabile, scrivendo tanto codice in più.
Se vogliamo risolvere il problema alla radice, andiamo nel file php.ini e cerchiamo il paragrafo error_reporting.

Troveremo i seguenti esempi:
; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT


Cerchiamo la voce di error_reporting non commentata (quella senza il punto e virgola davanti) e settiamola così:
error_reporting = E_ALL & ~E_NOTICE

Avremo così fatto sparire tutte le notizie/notifiche di sistema dalle nostra applicazione e potremo così fregarcene delle variabili non settate :p

ps se necessario riavviare il webserver (apache o nginx) 

Qui sotto, la videoguida su come risolvere questo problema tramite wamp:
https://youtu.be/UgJN-CvZJpo


Fine tutorial!

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon