Domanda

Fondamentalmente ho un sacco di link su una pagina e mi userà qualcosa di simile

<?PHP echo $SITE_PATH ?>

Molte molte volte sulla stessa pagina, ma mostrerà un avviso in PHP per farlo.

Lo so che si suppone di utilizzare le cose come isset () , ma avrei davvero bisogno di usare ogni volta che io chiamo?

<?PHP echo $SITE_PATH ?>

--- EDIT:
Se posso passare al utilizzando una variabile definita, quindi le comunicazioni sembrano andare via

È stato utile?

Soluzione

Due soluzioni, qui:

  • utilizzare solo variabili che esistono -. Che è quello che probabilmente si dovrebbe fare
  • o il test se esistono (con isset) prima di provare ad usarli.

Non c'è magia ^^

Se l'applicazione utilizza molte variabili non-impostati, probabilmente hanno qualche problema nel vostro progetto.


In un caso come quello che hai presentato, per una variabile che viene utilizzato un sacco di volte, vorrei fare in modo che esista, e, in caso contrario, impostarlo su '', per esempio, all'inizio del mio script.

Questo non è davvero un ottimo aspetto, ma lavorerò -. E, in questo modo, non sarà necessario passare attraverso tutta l'applicazione, l'applicazione di patch tutto

(O potrei anche disabilitare il livello E_NOTICE error_reporting - Non mi piace questa idea, ma, a volte, è davvero l'unico modo per affrontare con una certa base di codice)

Altri suggerimenti

È possibile disattivare i messaggi utilizzando @:

print @$site_path;

In alternativa, è possibile utilizzare un'operazione ternario per ottenere un valore di default:

print (isset($site_path)) ? $site_path : "default_path" ;

Alla fine, però, non si dovrebbe usare le variabili che non sono impostati. Se si, è necessario ripensare il suo approccio. Gestire le informazioni up-front, così il resto dei vostri script può essere eseguito senza problemi come questo.

Si dovrebbe assicurarsi che una variabile è impostata prima di usarlo (soprattutto facendo eco alla pagina). Se la variabile è venuta da una fonte insicura ($ _GET, $ _POST, database) allora si dovrebbe fare qualche tipo di filtro per evitare una violazione della sicurezza (cross site scripting (XSS), croce richiesta sito falso (CSRF), ecc .. .), ma se ti senti come tutto è sicuro e basta non si vuole mostrare gli errori (ad esempio nella produzione) impostare la segnalazione degli errori a 0.

es. error_reporting(0);

Si può fare questo a livello di php.ini o per pagina (set error_reporting(0); nella parte superiore della pagina).

Una nota a parte, quando la produzione non si mai voglia di visualizzare gli errori. li Log invece. In fase di sviluppo si vuole vedere tutti i tuoi errori (E_STRICT).

Si potrebbe creare una funzione per controllare se è impostata la variabile e restituirla:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top