2016-04-29 11 views
5

Sto usando alcuni plugin premium, e analizzando il loro codice che ho trovato, che in alcune funzioni che usano il codice come:Quanto è sicuro l'utilizzo. = Operatore su una variabile non inizializzata?

$output .= $some_str;

quando quella $ output non è stato menzionato da nessuna parte prima.

Quanto è sicuro questo codice? Ho cercato di trovare qualche guida in PHP Manual per questo, ma per quello che vedo, lo definiscono solo per $ output e $ some_str che sono stati precedentemente impostati in precedenza.

Successivamente questa variabile di output $ viene utilizzata per echo codice HTML.

Hai visto delle specifiche a riguardo? Forse c'è qualcosa che potrei fare al di fuori di questi plugin per rendere questo codice più sicuro? Qualche valore predefinito definito per tutte le variabili non inizializzate?

Grazie!

+1

Qual è la tua definizione di "sicuro"? A parte il valore NULL implicito e l'avviso/avviso (o la relativa voce di registro), i linguaggi di scripting non sono inclini ad es. errori del puntatore nullo. È coperto in http://php.net/manual/en/language.variables.basics.php#example-112 btw. – mario

+0

@mario, intendevo ad esempio, questo codice HTML che tale variabile avrebbe prodotto in seguito, contiene tutto ciò che non è stato intenzionalmente messo lì. –

+1

I casi a cui dovresti prestare attenzione non sono quelli con le variabili * non inizializzate *. Quelli non faranno alcun danno. Per plugin o temi è possibile riutilizzare accidentalmente * variabili ereditate *, ad es. da uno scope condiviso (globale). Quale potrebbe causare output non desiderati, ecc. – mario

risposta

7

È una cattiva pratica, motivo per cui PHP emetterà un E_NOTICE (se abiliti la segnalazione degli errori).

Detto questo, le variabili PHP vengono sempre inizializzate automaticamente in modo da non avere alcun effetto negativo.