2012-04-17 2 views
22

Ho notato questo piccolo bit di codice sopra un controller su un progetto demo codeigniter e mi chiedevo cosa facesse e se dovessi usarlo.Codeigniter definisce basepath o exit

defined('BASEPATH') OR exit('No direct script access allowed'); 

Anche se dovrei usarlo dove dovrebbe essere usato? i controllori? Modelli? entrambi? ecc.

risposta

41

al fine di attivare il framework codeigniter il sito deve accedere con www.blahblah.com/index.php/params. Passando attraverso index.php prima viene attivato il framework e varie classi e quant'altro vengono eseguite tramite PHP. Il framework esamina quindi i parametri dell'URL e attiva un controller specifico. Questa linea di codice assicura che il framework sia stato correttamente "avviato" e l'utente non stia semplicemente cercando di eseguire il singolo file php sul server web. Poiché il file php presuppone che le classi all'interno del framework siano già state dichiarate, l'esecuzione di un file del controller da sola potrebbe fallire miseramente e ha il potenziale per una violazione della sicurezza. Non è consentito l'accesso diretto.

+4

+1 praticamente su. Dovrebbe anche essere notato rende l'unità test un dolore. – AlienWebguy

+0

oh ok ok, questo bit di codice dovrebbe appartenere anche ai modelli o ai controller? Grazie –

+1

Se stai andando in modo CI, appartiene a quasi tutti gli script all'interno dell'installazione di CI. Nota @ commento AlienWebGuy per quanto riguarda i test, però ... – rjz