Volite web dizajn?

Zašto ne podijelite svoje znanje s cijelim svijetom? Svatko može pisati za Kroativ i na taj način se promovirati.

Pomoć potrebitima

http://www.hck.hr

Hrvatski Crveni križ

u službi humanosti od 1878.

Codeigniter konfiguracija (3. dio)

Autor/ica Primjeri

Autor web stranice primjeri.com na kojoj možete pronaći odgovore na česta pitanja iz svijeta web dizajna te programiranja.

Oglas

Nastavljamo u revijalno-detaljnom tonu 😉

Dakle da konačno malo prokomentiramo našu aplikacijsku mapu 😀 koja izgleda ovako:

 

Da prokomentiramo:

  • cache – ako nešto spremamo u “cache” onda je to pohranjeno u ovom direktoriju
  • config – ovdje se nalazi sve vezano za konfiguraciju
  • controllers – ovdje se nalaze svi kontroleri. Kod nas to neće biti slučaj jer ćemo koristiti HMVC iako možete paralelno koristiti i ovu mapu 😀
  • core – ako hoćemo override-ati system onda to možemo u ovom direktoriju
  • errors – prikazi grešaka definirani su u ovom direktoriju
  • helpers – direktorij za često korištene pomoćne funkcije
  • hooks – ovdje možemo izvršavati određene radnje u određenom trenutku prilikom učitavanja frameworka (npr. netom prije kontrolera i sl.)
  • language – ovdje se nalaze prijevodi
  • libraries – ovdje možete kreirati vaše klase
  • logs – različiti logovi (debug, error)
  • models – ovdje spremamo naše modele
  • modules – ovdje spremamo naše module
  • third_party – ovdje idu različite third party komponente i sl.
  • views – ovdje spremamo naše HTML datoteke (one su zapravo *.php datoteke ali sadržaj je HTML)

Izvan aplikacijske mape nalazi se još i naš index.php (u public_html direktoriju) a nalaziti će se i naše css, js, flash, slike i slične datoteke.

index.php

Za početak ako me nešto nervira to je onda trenutak kada svoju aplikaciju moram preseliti sa lokalnog/development/razvojnog računala na server a tamo pak opet imam barem neku testnu subdomenu i sam produkcijski server.

Vjerojatno znate već što vas čeka 😀

Promjena baze, korisnika, lozinke, putanja do sistema, aplikacije, eventualno mape u koju korisnici rade upload i ostale putanje svaki puta kada selite aplikaciju. Nema više!

U nastavku vam nudim (jedno od mogućih) rješenje (u većini slučajeva :D) za to.
Dakle jednom ispišete sve lokacija i to je to samo selite aplikaciju kako god bez brige (naravno nakom što ste sve testirali) 😀

Dakle radimo fleksibilno a cijelu stvar ćemo bazirati na (pod)domeni iako može i po IP-u ili čega se već sve sjetite).

Pa krenimo od naše index.php datoteke

Definirat ćemo par pomoćnih konstanti:

BASE_URL i ENVIRONMENTH_PATH

SYSTEM_PATH, APPLICATION_PATH i UPLOADS

BASE_URL konstanta

U konstanti BASE_URL definirat ćemo osnovni URL stranica u obliku:

http://mojadomena.com

I nju sada možemo koristiti kroz cijelu aplikaciju a prvo mjesto gdje ćemo ju koristiti biti će u konfiguracijskoj datoteci 😉

Na otprilike 50-tu liniju dodajte ovo:

/*
 *---------------------------------------------------------------
 * URL
 *---------------------------------------------------------------
 *
 * probajmo otkriti osnovni URL
 *
 */
if(isset($_SERVER['HTTP_HOST']))
{
	$base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http';
	$base_url .= '://'. $_SERVER['HTTP_HOST'];
	$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
}
else
{
	$base_url = 'http://localhost/';
}

define('BASE_URL', $base_url);
unset($base_url);

ENVIRONMENTH_PATH konstanta

Odmah nakon gornjeg koda napišite(copy/paste;) sljedeći kod:

/*
 *---------------------------------------------------------------
 *  SISTEM + APLIKACIJA + UPLOAD MAPA
 *---------------------------------------------------------------
 *
 * Ovdje ćemo otkriti i podesiti putanje s obzirom na to gdje je aplikacija (loaklno, testni server ili produkcijski server)
 *
 */
//provjeravamo da li je definiran ključ SERVER_NAME u globalnoj varijabli $_SERVER (ovisi o postavkama servera)
if( ! defined('ENVIRONMENT_PATH')) define('ENVIRONMENT_PATH', ($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'mojadomena.hr');
switch (ENVIRONMENT_PATH)//provjeravamo što se nalazi u našoj konstanti
{
	case 'localhost': //putanje za localhost
		//define('SYSTEM_PATH', '../codeigniter/v2.1.0'); //može i ovako
		define('SYSTEM_PATH', 'C:/xampp/htdocs/codeigniter/v2.1.0');
		//define('APPLICATION_PATH', '../projekti/projekt_1'); //može i ovako
		define('APPLICATION_PATH', 'C:/xampp/htdocs/projekti/projekt_1');
		define('UPLOADS', 'C:/xampp/htdocs/public_html/uploads');
	break;
	case 'test.mojadomena.hr': //putanje za test subdomena na serveru
		define('SYSTEM_PATH', '/home/korisnicko_ime/codeigniter/v2.1.0/system');
		define('APPLICATION_PATH', '/home/korisnicko_ime/codeigniter/applications/projekt_1/test');
		define('UPLOADS', '/home/korisnicko_ime/uploads');
	break;
	default: //putanje za produkcijski server :)
		define('SYSTEM_PATH', '/home/korisnicko_ime/codeigniter/v2.1.0/system');
		define('APPLICATION_PATH', '/home/korisnicko_ime/codeigniter/applications/projekt_1/production');
		define('UPLOADS', '/home/korisnicko_ime/uploads');
	break;
}

Taj dio index.php-a bi trebao izgledati ovako:

U konstanti ENVIRONMENTH_PATH nalazi se ili vrijednost $_SERVER[‘SERVER_NAME’] varijable ako je definirana na serveru a ako nije onda ćemo ju popuniti sa svojom vrijednosti i tu ćemo postaviti da je default produkcijski server.

Nakon toga sa switch-em provjerimo vrijednost ENVIRONMENT_PATH konstante i s obzirom na to na kojem smo serveru (localhost, test.mojadomena.hr ili mojadomena.hr) postavljamo vrijednosti za sistemski direktorij, aplikacijski direktorij i uploads direktorij. Po potrebi slično možete postaviti dodatne putanje.

NAPOMENA: za test i produkcijski server navedene su tipične putanje za linux shared hosting vaše bi mogle biti drugačije pa ih sukladno tome prilagodite.

$system_path i $application_folder varijable
Sada ćemo u index.php-u zamjeniti vrijednosti ovih varijabli sa vrijednostima konstanti SYSTEM_PATH i APPLICATION_PATH

$system_path = SYSTEM_PATH;

odnosno:

$application_folder = APPLICATION_PATH;

Osvrnimo se sada malo na config direktorij (to bi bio ovaj u mapi projekt_1):

Za sada ćemo se pozabaviti sa config.php i database.php datotekama.

config.php

U ovoj datoteci nalaze se konfiguracijske postavke za cijeli framework/aplikaciju. Mi ćemo ju promjeniti na sljedeći način:

//ovdje je definiran osnovni url (dorbo da imamo definiranu BASE_URL konstantu tako da to ne moramo svaki puta mjenjati)
$config['base_url'] = BASE_URL; //ovdje je definirana indeksna stranica 'index.php'. uklonite to pa će nam url-ovo izgledati ovako http://loclhost/projekt_1/kontroler/metoda ;)
$config['index_page'] = ''; //potreban je .htaccess //ovdje moramo definirati enkripcijski ključ. samo upišite random znakove nemojte prepisivati ove
$config['encryption_key'] = 'herg8774D84Jtgirj3EEStGeeer'; /* ovdje konfiguriramo na koji način će se spremati sjednice spremati ćemo ih u bazu */
$config['sess_cookie_name'] = 'session'; $config['sess_expiration'] = 2*60*60; //definirana je u sekundama dakle 2sata*60minuta*60sekundi=7200sekundi
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE; //mora biti TRUE da bi se spremalo u bazu
$config['sess_table_name'] = 'projekt1__sessions'; // naziv tablice u bazi u koju će se spremati (!!!tablicu je potrebno manualno kreirati!!!)
$config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; //ako koristite upload baziran na flash-u postavite na FALSE zbog buga u flash playeru
$config['sess_time_to_update'] = 300; //XSS filtriranje globalno podesite ovako
$config['global_xss_filtering'] = TRUE;

Cijela config.php datoteka izgleda ovako:

 

database.php

U ovoj datoteci definiramo stvari potrebne da bi naša aplikacija koristila bazu (host, baza, korisničko ime, lozinka, …)
S obzirom da želimo biti fleksibilni s obzirom na to gdje nem je aplikacija smještena i ovaj dio moramo fleksibilno definirati. Promjenite vašu database.php datoteku da izgleda ovako:

$active_group = ENVIRONMENT_PATH;
$active_record = TRUE;

$db['localhost']['hostname'] = 'localhost';
$db['localhost']['username'] = 'root';
$db['localhost']['password'] = 'root';
$db['localhost']['database'] = 'projekt1_db';
$db['localhost']['dbdriver'] = 'mysql';
$db['localhost']['dbprefix'] = '';
$db['localhost']['pconnect'] = TRUE;
$db['localhost']['db_debug'] = TRUE;
$db['localhost']['cache_on'] = FALSE;
$db['localhost']['cachedir'] = '';
$db['localhost']['char_set'] = 'utf8';
$db['localhost']['dbcollat'] = 'utf8_general_ci';
$db['localhost']['swap_pre'] = '';
$db['localhost']['autoinit'] = TRUE;
$db['localhost']['stricton'] = FALSE;

$db['test.mojadomena.hr']['hostname'] = 'test.mojadomena.hr';
$db['test.mojadomena.hr']['username'] = 'korisnicko_ime';
$db['test.mojadomena.hr']['password'] = 'lozinka';
$db['test.mojadomena.hr']['database'] = 'projekt1_db_test';
$db['test.mojadomena.hr']['dbdriver'] = 'mysql';
$db['test.mojadomena.hr']['dbprefix'] = '';
$db['test.mojadomena.hr']['pconnect'] = TRUE;
$db['test.mojadomena.hr']['db_debug'] = TRUE;
$db['test.mojadomena.hr']['cache_on'] = FALSE;
$db['test.mojadomena.hr']['cachedir'] = '';
$db['test.mojadomena.hr']['char_set'] = 'utf8';
$db['test.mojadomena.hr']['dbcollat'] = 'utf8_general_ci';
$db['test.mojadomena.hr']['swap_pre'] = '';
$db['test.mojadomena.hr']['autoinit'] = TRUE;
$db['test.mojadomena.hr']['stricton'] = FALSE;

$db['mojadomena.hr']['hostname'] = 'mojadomena.hr';
$db['mojadomena.hr']['username'] = 'korisnicko_ime';
$db['mojadomena.hr']['password'] = 'lozinka';
$db['mojadomena.hr']['database'] = 'projekt1_db';
$db['mojadomena.hr']['dbdriver'] = 'mysql';
$db['mojadomena.hr']['dbprefix'] = '';
$db['mojadomena.hr']['pconnect'] = TRUE;
$db['mojadomena.hr']['db_debug'] = TRUE;
$db['mojadomena.hr']['cache_on'] = FALSE;
$db['mojadomena.hr']['cachedir'] = '';
$db['mojadomena.hr']['char_set'] = 'utf8';
$db['mojadomena.hr']['dbcollat'] = 'utf8_general_ci';
$db['mojadomena.hr']['swap_pre'] = '';
$db['mojadomena.hr']['autoinit'] = TRUE;
$db['mojadomena.hr']['stricton'] = FALSE;

Naime, $db variabla je zapravo polje i u njega je mogu spremiti više konekcija.
U varijabli $active_group nalazi se defaultna konekcija. Baš tu varijablu popunjavamo s obzirom na kojem smo serveru/domeni.

Dakle ako smo na serveru/domeni “test.mojadomena.hr” onda će se učitati konekcija $db[‘test.mojadomena.hr’].

Tablica za sjednice

Spomenu sam ranije da ćemo sjednice spremati u bazu i da će nam za to biti potrebna tablica pa ćemo ju sada kreirati.

Prvo da kreiramo bazu (pogledajte instalaciju i konfiguraciju XAMPP-a:D):

Usmjerite vaš preglednik na:

http://localhost/phpmyadmin

i prijavite se sa:

User: ‘root’
Password: ‘root’

Nakon toga kreirajte bazu ‘projekt1_db’.

Nakon što ste uspješno kreirali bazu izvršite sljedeći upit:

 

CREATE TABLE IF NOT EXISTS `projekt1_sessions` (
session_id varchar(40) DEFAULT ‘0’ NOT NULL,
ip_address varchar(16) DEFAULT ‘0’ NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);

Nakon toga trebali bi u vašoj novoj bazi ‘projekt1_db’ imati tablicu ‘projekt1_sessions’ u koju će se spremati sjednice vaše novopečene aplikacije.

.htaccess
Da bi nam aplikacija/projekt ima “lijepe” URL-ove u config.php datoteci odredili smo:

$config[‘index_page’] = ”;

da bi nam to radilo moram kreirati .htaccess datoteku sa sljedećim sadržajem i ako ste na windozama na sljedeći način.

Sadržaj .htaccess datoteke:

Options -Indexes
DirectoryIndex index.php

RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|flash|assets|captcha|resources|apc|images|img|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Želite li na windozama spremiti datoteku koja počinje sa točkom morat ćete to napraviti ovako:

Bitno je da prilikom spremanja izaberete “Save as type: All types (*.*)” kako je uokvireno na slici iznad;)

Huh…bome svašta nešto smo sada napravili.

Osim toga ja sam malo popunio public_html mapu sa još nekoliko direktorija (css, js, images) koji bi trebali biti samoobjašnjivi pa sada cijela stvar izgleda ovako.

Zaključak

Sada kada premjestite vašu aplikaciju na ‘mojadomena.hr’ ona će raditi bez ikakvih dodatnih konfiguracija 😀

Ako vam se svidjelo ovo molim Vas da posjetite primjeri.com i postavite pitanja. Bit će nam i više nego drago odgovoriti na vaša pitanja.  Hvala 🙂
Primjeri

S obzirom da je ovaj članak malo poduži ako ima grešaka molim da mi javite a sljedećim tutorijalima nastavit ćemo sa kontrolerima i pogledima i našim prvim primjerima 🙂 Ako ima želja… (ali samo trenutno) ispunjavam 😉

Da vas nebi mučio više negoli je potrebno pripremio sam i mali zip za preuzimanje sa projekt_1 i public_html mapama 😉

Označeno s:
Za ovaj članak možete glasati na CroPortalu i tako pomoći u njegovoj promociji. Ako članak još nije objavljen vi možete biti prvi!
Stavovi i mišljenja izrečena u ovome članku i/ili komentarima odnose se samo na autora/icu članka i/ili komentara, a ne i cijele Kroativ mreže. Zabranjeno je neovlašteno prenošenje članaka u cjelosti bez prethodnog dogovora ili bez istaknutog povratnog linka na www.kroativ.net stranicu te imena autora.
Oglas

6 komentara

  • Primjeri kaže:

    I’m back 😉

  • Marin kaže:

    Oce biti sta dalje u vezi CI-a ili ostaje samo na ovim ipak osnovnim tutorialima? U svakom slucaju sve pohvale!

    • Primjeri kaže:

      Čekam neke povratni interes pa ako ga ima (konačno se netko javio) dapače a ako ne onda nema smisla. A i neki prijedlog bi svakako bio dobra smjernica 😉

  • Daliborko kaže:

    Da li će biti još koji nastavak ovih tutorijala.Ovo je za svaku pohvalu.

  • Kruno kaže:

    Ovo do sad je bilo odlično! Puno mi je pomoglo. Da li slijedi nastavak dalje s nekim primjerom?

  • CharlesfrelP kaže:

    Приветствуем Сайт заказа транспорта obltransavto.ru свыше 18 лет предоставляет сервис в сфере пассажирских перевозок автобусным транспортом по Москве Московской области и ряде других городов России. Компания заказа транспорта и спецтехники ОблТрансАвто располагает большим парком автобусов микроавтобусов и спецтехники в котором имеется свыше 1350 единиц транспорта различного уровня комфортабельности – от экономичного до премиум-класса разной вместительности – от 7 до 60 мест. В наличиии много форм автобусов разного уровня комфорта – от эконом до бизнес-класса различной размерности. У нас Вы можете заказать прокат автобуса или прокат микроавтобуса а так же арендовать спецтехнику для любых целей и работ. Обратившись в нашу организацию: Вы получите наши услуги – по эксклюзивным сниженным ценам Вы можете заказать подходящий Вам транспорт под любое мероприятие на любой срок – от нескольких часов до нескольких дней. А также воспользоваться услугой проката автобусов и микроавтобусов с водителем или без него. Наш транспорт оснащен всем необходимым для комфортных и безопасных поездок а вопросам обеспечения безопасности при перевозке детей уделяется особое внимание. Наши водители опытные и пунктуальные транспортные средства всегда чистые и исправные а клиентский сервис на высоте Мы работаем официально с частными и юридическими лицами 24/7 для Вашего удобства Наши образованные менеджеры совместно с техническими специалистами подберут для Вас самый выгодный вариант аренды транспорта. Менеджер уточнит все детали поездки рассчитает стоимость и забронирует для Вас оптимальный вариант транспортного средства на нужное Вам время. Предварительный расчет стоимости наши менеджеры составят в кратчайший срок – сразу по телефону. Транспорт будет предоставлен Вам в удобное для Вас время. Наш добросовестный специалист составит Вам итоговое предложение по аренде транспорта. Сроки и время доставки транспорта будут обязательно согласованы с Вами заранее Для нас важно чтобы клиент вспоминал о сотрудничестве с нами с улыбкой. Именно поэтому мы постарались сделать уровень обслуживания максимально высоким. Корпоративным клиентам мы всегда готовы предложить особо выгодное сотрудничество на самых выгодных условиях В полный перечень услуг предприятия включены: Аренда автобуса Аренда автобуса с водителем в Москве Аренда автобуса с водителем Аренда пассажирского автобуса Заказ автобуса Прокат автобуса с водителем Аренда автобусов в Московской области Автобус для перевозки детей Аренда автобусов для школьников Заказать автобус для школьников Сколько стоит автобус для школьников Автобус Higer в аренду Автобус Yutong ZK 6899 HA в аренду Автобус Ман туристический Автобус Неоплан в аренду Аренда автобуса Богдан Аренда автобуса Ванхул Аренда автобуса Мерседес Аренда Даф Бова Туристические автобусы Сетра Аренда автобуса 30 мест Аренда автобуса 60 мест Заказ автобуса 20 мест Аренда автобуса на день Аренда автобуса на сутки Аренда автобуса на час Автобус на выпускной вечер Аренда автобуса на выпускной Аренды автобуса на корпоратив Заказать автобус для экскурсии Заказать автобус на выпускной Служебная развозка персонала Аренда автобуса на 30 человек Аренда автобуса на 35 человек Аренда автобуса на 50 человек Аренда автобуса на 60 человек Междугородние пассажирские перевозки Аренда VIP микроавтобусов Аренда микроавтобуса Взять в аренду микроавтобус Заказать микроавтобус недорого Заказать микроавтобус с водителем Услуги микроавтобуса Заказ микроавтобуса Заказ микроавтобуса для перевозки людей Аренда Peugeot Boxer Аренда Вольво Аренда микроавтобуса Ford Аренда микроавтобуса Газель Аренда микроавтобуса Мерседес Спринтер Микроавтобус Ивеко Дейли Микроавтобус Максус Микроавтобус Мерседес Варио Аренда микроавтобуса на 2 часа Аренда микроавтобуса на 3 часа Аренда микроавтобуса на день Аренда микроавтобуса на сутки Аренда микроавтобуса на час Заказ микроавтобуса на час Микроавтобус посуточно Заказать микроавтобус на свадьбу Микроавтобус с водителем на свадьбу Транспорт на мероприятие Транспорт на свадьбу Транспорт на соревнования Трансфер от аэропорта Трансферы в аэропорт и на вокзал Аренда спецтехники Аренда Автовышки Аренда АвтоКрана Аренда БетоноНасоса Аренда Бульдозера Аренда гусеничного экскаватора Аренда колесного экскаватора Аренда Манипулятора Аренда мини погрузчика Аренда Мини Экскаватора Аренда СамоСвала Аренда фронтального погрузчика Аренда экскаватора погрузчика Аренда ЯмоБура Аренда Длинномера Доставка сотрудников Доставка сотрудников автобусом Доставка сотрудников к месту работы Доставка сотрудников на работу Корпоративные поездки Перевозка иностранцев Ритуальные перевозки Транспортное обслуживание организаций Услуга развозки сотрудников Служебная развозка персонала Аренда автобусов и микроавтобусов Сайт заказа транспорта Доставка Песка Доставка Грунта Доставка Щебня Рентабельно заказать автобус или заказать прокат микроавтобуса а так же арендовать спецтехнику для любых работ – Вы можете обратившись в нашу фирму. Оформить заявку можно и нужно: по телефону 7926342-61-53 по электронной почте vezyvsehyandex.ru на нашем сайте obltransavto.ru через форму обратной связи. Наш ответственный менеджер уточнит все детали поездки Ваши пожелания подберет оптимальный вариант транспортного средства на нужное Вам время. Ваша задача – наша спецтехника

Trackbacks & Pingbacks

Ostavite komentar

Autori s više od 10 komentara nemaju tag nofollow na svojim linkovima! Zabranjeno je vrijeđanje, omalovažavanje ili na bilo koji drugi način ometanje normalnog toka komentara. Također je zabranjeno oglašavanje u komentarima i sve druge vrste spam-a.

(*) polja su obavezna

XHTML: Možete koristiti: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">