O nascimento de um site com Codeigniter - Estrutura e Preparação do Site - Parte II

imagem de mem

Este tópico é também bem simples, vamos então tratar das configurações da nossa aplicação:

Note que algumas partes deste tópico foram já desenvolvidas num outro tutorial, contudo, achei por bem, ainda assim, criar um tópico dedicado a isto. Notem porém que, porque já há um tutorial bem detalhado sobre o .htaccess e a remoção do index.php e, ainda por cima, feito por alguém bem mais capaz do que eu, resolvi colocar mais código e menos comentário nesse tópico. Vamos a isso?

.htaccess:
O ficheiro .htaccess conterá o seguinte: (notem os comentários no .htaccess (que começam pelo cardinal).

  1. #Para não permitir o acesso ao ficheiro .htaccess vamos colocá-lo com permissões:644. E, adicionar o seguinte:
  2. <Files .htaccess>
  3. order allow,deny
  4. deny from all
  5. </Files>
  6.  
  7. #Nao permitir o Directory Listing:
  8. Options -Indexes
  9.  
  10. #Remove o índex.php do URL - url friendly:
  11. <IfModule mod_rewrite.c>
  12. RewriteEngine On
  13. RewriteCond %{REQUEST_FILENAME} !-f
  14. RewriteCond %{REQUEST_FILENAME} !-d
  15.  
  16. RewriteRule ^(.+)$ index.php?$1 [L]
  17.  
  18. #Nao permitir hotlinking:
  19. RewriteCond %{HTTP_REFERER} !^$
  20. RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
  21. RewriteRule \.(gif|jpg|js|css|png|jpeg|swf)$ - [F,NC,L]
  22. </IfModule>

application/config/config.php:

  1. $config['base_url']     = "http://mysite.com/";
  2. $config['index_page'] = ‘’;

em application/config/routes.php:

  1. /*
  2.  * o nome do ficheiro controller que vai ser activo quando se escreve:
  3.  * <a href="http://www.meusite.com" title="http://www.meusite.com">http://www.meusite.com</a> :
  4.  *
  5.  */
  6. $route['default_controller'] = 'c_homepage';

em application/config/autoload.php, vamos colocar libraries e helpers do CI que iremos usar com frequencia ao longo do site:
Coloque-as de acordo com as necessidades do seu projecto, para não estar a ocupar recursos desnecessariamente:

  1. $autoload['libraries'] = array('database','session','email','validation','pagination');
  2. $autoload['helper'] = array('url','form','text','date','security');

Não se esqueça que mudamos a localização das pastas para uma pasta private no tutorial anterior. Ora, temos de editar o nosso index.php da seguinte forma(pelo user guide do CI, sabemos que temos de usar um fullpath)

  1. $system_folder = "/home/mysite/private/system";
  2. $application_folder = "/home/mysite/private/application";

application/config/database.php
Finalmente, veja configure o ficheiro database.php. (Note a mudança no uft8)

  1. $active_group = "default";
  2. $active_record = TRUE;
  3.  
  4. $db['default']['hostname'] = "localhost:/tmp/mysql.sock";
  5. $db['default']['username'] = "myusername";
  6. $db['default']['password'] = "mypassword";
  7. $db['default']['database'] = "mydatabase";
  8. $db['default']['dbdriver'] = "mysql";
  9. $db['default']['dbprefix'] = "";
  10. $db['default']['pconnect'] = TRUE;
  11. $db['default']['db_debug'] = TRUE;
  12. $db['default']['cache_on'] = FALSE;
  13. $db['default']['cachedir'] = "";
  14. $db['default']['char_set'] = "utf8";
  15. $db['default']['dbcollat'] = "utf8_unicode_ci"; //unicode em vez de general

Este foi bem rápido e leve. Contudo, procurei ser correcto nos nomes e usar alguns nomes em inglês para que, caso algum conceito não seja claro para si, possa recorrer a um motor de pesquisa, e encontrar o(s) seu(s) significados. (ie. hotlinking, libraries, helpers...).

Bem, o interessante está ainda para vir. :-)
No próximo tutorial, vamos falar da estrutura das Views. Como o tópico é bem grande, iremos dividi-lo em episódios.
Até ao próximo tutorial: O nascimento de um site com Codeigniter - Estrutura e Preparação do Site - Parte III - Episódio 1 de 3

ps- vou escrevendo conforme vou tendo tempo, uns tutoriais podem seguir seguidos, outros podem levar semanas de intervalo. :( Depende do trabalho aqui deste lado ok?

Abraço,
Márcio

Oi márcio, antes de mais nada

Oi márcio, antes de mais nada gostaria de parabeniza-lo pelos post... muito interessante, tou ansioso pra testar. Só queria se fosse possível vc me explicasse essa parte "application/config/routes.php:"
"
$route['default_controller'] = 'c_homepage';
"
Mais especificamente esse comando. eu deixo do jeito que tá mesmo?!
abraço

Olá Vitor, Lamento o tempo de

Olá Vitor,

Lamento o tempo de resposta, eu não sou informado quando os comentários são postos, então, só quando vou visitando os artigos é que vou vendo se tem comentário ou não. :)

Bem, a ideia do $route['default_controller'] é a seguinte:
Quando o utilizador digita o endereço do site no browser, qual será o controlador a ser chamado? Essa é a pergunta que ele faz, e que você poderá responder.
Portanto, respondendo à sua pergunta: é como você quiser.

O utilizador escreve no browser:
http://www.oseusite.com

Note que, neste endereço, nenhum controlador foi chamado. (os controladores são chamados no segundo segmento do URI) - e aqui não há nenhum segundo segmento. Então, a questão é: quando nenhum controlador é explicitamente chamado, qual deverá ser o controlador (porque tem sempre que ter um) que será activado? Eu escolhi um chamado 'c_homepage', você, poderá colocar aquele que desejar que apareça, quando alguém faz: http://www.seusite.com , por exemplo 'c_produtos'... 'c_destaques'.... enfim, livre escolha. :)

Em relação ao testar, vitor... infelizmente eu acho que vai dar buraco se você usar o código que vou postando aqui... O acho que o código não estará errado, mas, as relações entre as várias partes do código sim. Então, o que eu aconselho, a si e a todos os outros, é que, vejam este código, não como um manual, mas como uma partilha de experiencia onde, a partir dela, vocês poderão contruír os seus próprios projectos.

Sempre newbie,
Márcio