2012-04-17 6 views
22

Zauważyłem ten mały kawałek kodu nad kontrolerem na projekcie demonstracyjnym codeigniter i zastanawiałem się, co zrobił i czy powinienem go używać.Codeigniter zdefiniować ścieżkę podstawową lub wyjść

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

Również jeśli powinienem użyć go tam, gdzie powinien on być użyty? kontrolery? modele? obie? itp.

Odpowiedz

41

w celu aktywacji schematu kodów źródłowych witryna musi być dostępna pod adresem www.blahblah.com/index.php/params. Przechodząc przez index.php najpierw struktura jest aktywowana, a różne klasy i inne są uruchamiane przez PHP. Struktura następnie analizuje parametry adresu URL i aktywuje określony kontroler. Ta linia kodu zapewnia, że ​​struktura została poprawnie "uruchomiona", a użytkownik po prostu nie próbuje uruchomić pojedynczego pliku php na serwerze sieciowym. Ponieważ ten plik php zakłada, że ​​klasy w ramach struktury zostały już zadeklarowane, samodzielne uruchomienie pliku kontrolera zakończyłoby się niepowodzeniem i może spowodować naruszenie bezpieczeństwa. Brak bezpośredniego dostępu.

+4

+1 prawie na miejscu. Należy również zauważyć, że sprawia to, że testowanie jednostki jest bolesne. – AlienWebguy

+0

o tak, dobrze, czy ten fragment kodu również należy do najlepszych modeli czy po prostu kontrolerów? Dzięki –

+1

Jeśli wybierasz sposób CI, to należy on do niemal każdego skryptu instalowanego przez CI. Uwaga @ AlienWebGuy komentarz o testowaniu, choć ... – rjz