2012-04-17 19 views
22

Noté este pequeño bit de código sobre un controlador en un proyecto de codegitador de demostración y me pregunté qué haría y si debería usarlo.Codeigniter define basepath o exit

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

Además, si debo usarlo ¿dónde debería usarse? Controladores? modelos? ¿ambos? etc ..

Respuesta

41

el fin de activar el marco CodeIgniter el sitio debe acceder con www.blahblah.com/index.php/params. Al pasar por index.php primero, el marco se activa y varias clases y otras cosas se ejecutan a través de PHP. El marco luego mira los parámetros de la url y activa un controlador específico. Esta línea de código asegura que el marco haya sido "arrancado correctamente" y el usuario simplemente no está tratando de ejecutar el único archivo php en el servidor web. Debido a que ese archivo php supone que las clases dentro del marco ya han sido declaradas, ejecutar un archivo controlador por sí solo fallaría miserablemente y podría ser una violación de la seguridad. No hay acceso directo permitido.

+4

+1 bastante en el clavo. También se debe notar que hace que las pruebas unitarias sean un dolor. – AlienWebguy

+0

oh, está bien, ¿este código también debería estar en la parte superior de los modelos o solo en los controladores? Gracias –

+1

Si va por la forma CI, pertenece a casi todas las secuencias de comandos dentro de la instalación de CI. Tenga en cuenta el comentario de @ AlienWebGuy con respecto a las pruebas, aunque ... – rjz

Cuestiones relacionadas