php skripta za "upravljanje" sajtom- pomoc

1

php skripta za "upravljanje" sajtom- pomoc

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

pre nego sto nastavim moram da naglasim da google ne moze da mi pomogne oko ovog problema (a ni ja bas ne umem da postavim pitanje).
Odlucio sam da napisem jednu prostu php skriptu medjutim ja nemam iskustva u tome (ovo je lepsi nacin da kazem da nikada nisam izucavao php Smile). Takodje znam da se najbolje uci kada radis nesto konkretno pa cu to da upotrebim sada Smile.
Malo sam gledao php source fajlove u Drupalu, sNewsu i NanoCmsu i shvatio sam da ce, ono sto meni treba, biti lako uraditi ali mi treba pomoc.

Evo sta sam zamislio:
1. Da kreiram jednu php skriptu i da ona obavlja kompletan posao. Ime skripte neka bude "php-txt-reader.php".
2. "php-txt-reader.php" skripta bi sadrzala sledece mogucnosti:
-da proveri "config.php" fajl koji bi sadrzao ime sajta, meta tagove i sl. Prazne promenljive bi se menjale podrazumevanim vrednostima i sadrzajem. Unutar "config.php" fajla bi se nalazile provere za promenljive.
-mogucnost da skenira "txt-source" direktorijum (i da me obavesti ako isti ne postoji) i nadje sve *.txt fajlove (i samo *.txt fajlove). Bitno je naglasiti da se pretraga za "*.txt" fajlovima vrsi rekurzivno tj. nebitno je da li je fajl unutar "txt-source/" ili "txt-source/txt/projekti/info" direktorijuma. To automatski znaci da, ako postoje 2 fajla istog imena, nam treba funkcija koja ce da izbaci u html body poruku da postoji konflikt buduci da su nadjena 2 fajla istog imena. Obratite paznju da bi ova provera nastala samo kada se klikne na link zato sto bi provera u realnom vremenu (u pozadini) konstantno crpila protok.
-da nadjene txt fajlove ubaci u "index.php" kao body sajta. "index.txt" je fajl koji mora postojati! Ubacivanje fajlova se vrsi na zahtev stoga bi "index.txt" bio default (mada bih dodao opciju da to mogu da menjam). Za ostale "*.txt" fajlove bi se kreirali dinamicni linkovi poput "index.php?s=XXX" (primer: "projekti.txt" fajl ce dobiti svoj link u obliku "index.php?s=projekti"). Kada se klikne na neki od ovako definisanih linkova <body> samog "index.php" fajla se dinamicno menja i ucitava se zeljena strana. Ukoliko se unese link koji ne postoji (primer: "index.php?s=page" je adresa kojui je korisnik uneo ali ona zapravno ne postoji) onda se automatski redirectuje na stranu koju ja odredjujem u "config.php". Naglasavam da bih da izbegnem previse upita kako bih ustedeo svaki kb protoka na sajtu.
-da se ime nadjenog fajla lepo formatira kako bih mogao da ga koristim unutar <title></title> html tagova.

Drugim recima (sumirano i sa poentom): kada ja kliknem na "index.php?s=projekti" link skripta ce da proveri postoji li "txt-source/projekti.txt". Ukoliko postoji, taj fajl postaje body unutar "index.php" strane. Ukoliko ne postoji skripta ucitava default sadrzaj ("index.txt"). Dakle, provera se vrsi samo na klik i to samo ako je link, na koji smo kliknuli, oblika "index.php?s=XXX".
Svaki *.txt fajl bi sadrzao html sadrzaj strane.

Naglasicu da me optimizacija za search endzine ne interesuje stoga mi je nebitan format linkova (drugim rcima: bez "friendly" linkova)! Sa dizajnerske tacke gledista ovo je glupa izjava (i ja sam svestan toga) medjutim ako pravim sajt koji nema cilj da sadrzi blog niti vise od 2-3 strane, gde bih morao da obratim paznju na linkove, onda je SEO optimizacija nebitna. Ako na sajtu imam samo 5 tekstova onda ne moram da ih "razbacujem" po linkovima tipa "/2009/12/21/mala-nocna-muzika" ili "2009/April/index.php?page=mala-nocna-muzika"!

Elem, evo sta sam ja uradio do sada:

index.php strana (mada ovo moze i da bude index.html zar ne?):
<?php include('txt-source/php-txt-reader.php'); include_once('txt-source/php-txt-reader-config.php'); ?> ... html header, meta tagovi i ostali xhtml elementi... <body>   <!-- izlazne informacije php skripte -->   <?php $html_body(); ?> </body> ...dno i ostatak xhml koda

To je zapravo sve sto se tice "index.php" strane (preteglio sam se od rada Mr. Green).
Vidim da u nekim skriptama se nalaze definisane funkcije (poput "html_body") koje se ukljucuju u samu php skriptu pa me zanima koja je bolja varijanta? Da se ukljuci sama skripta u index.php (da umesto "<?php $html_body(); ?>" stoji "<?php include('php-txt-reader.php'); ?>" ili da ukljucim neku funkciju iz glavne php skripte koja ce da obavlja posao sredivanja svega sto se nalazi unutar <body></body> tagova?


Samu php skriptu jos nisam poceo da radim medjutim imam vec ideju kako bi ona izgledala:

<?php // Ukljucivanje error reportinga (uzeto iz sNews-a 1.7) error_reporting(E_ALL ^ E_NOTICE); // Dir pretraga function dir_search() {   $path = '$txt_path';   blah blah blah; } // funkcija koja ce da menja sadrzaj unutar "index.php" strane function html_body() {   echo $dir_search_output; } ?>

dir_search funkcija bi imala zadatak da pretrazi direktorijum i da proveri postoje li (prvo) "index.txt" (pa nakon toga) ostali "*.txt" fajlovi. Ako je sve ok onda se "index.txt" ubacuje kao index strana sajta dok su svi ostali fajlovi na "cekanju" dok ih "ne pozovemo" klikom na odredjeni link. Takodje bih kreirao posebnu funkciju "404" za izbacivanje gresaka ukoliko trazeni sadrzaj ne postoji (to se lako sredi na serveru dodavanjem linka tipa "index.php?s=404" u .htaccess).


Sama skripta bi trebala da je sto jednostavnija i da najjednostavnije cita *.txt fajlove, primenjuje promenljive definisane unutar "config.php" fajla i nista vise. Izbegao bih sve napredne funkcije i zavrzlame i sto jednostavnije bih to da odradim! Eventualno bih dodao jos 2 mogucnosti:
-selektivno primenjivanje headera i footera tj. mogucnost da se isti ukljuce/iskljuce ako se unutar "*.txt" fajla nadje "okidac" tipa "<?php header("off") ?>".
-da primenim gzip plugin za kompresovanje sadrzaja prikazanog na ekranu. Kontam da je za ovo neophodna podrska samog servera stoga bi postojala provera da li ista i postoji. AKo postoji ukljucimo je, ako ne postoji nista ne menjamo.
Ako imate neke predloge i ideje rado bi ih cuo Smile

Dakle, gde da pocnem? Na sta da obratim paznju?


p.s. Ne trazim gotova resenja. Znam da ja mogu za 1min da instaliram, kompletno i provereno, CMS resenje ali to mi nije cilj. Pored toga, vecina CMS resenja zahteva bazu podataka ali ja bih da ona bude u samim fajlovima cime se totalno gubi potreba za bilo kakvom bazom (mysql, sqlite, postrge ili kako se vec zove). Ovako cu moci da se malo upoznam sa php-om i da uradim nesto prakticno Smile

jos jedan p.s. Ne interesuje me ni da naucim kompletan php kao i da ucim kako da definisem svaku mogucu sitnicu u php-u. Zelim da se upoznam sa istim kroz ovaj projekat (buduci da sam html-om sada vrlo dobro ovladao ovo bi bila sledeca stanica zar ne?) Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 11 Maj 2005
  • Poruke: 871
  • Gde živiš: Aleksinac - Niš

Ne znam zašto bespotrebno komplikuješ.
Mnogo je lakše da za ovo koristiš bazu. I da kad već počinješ da učiš php (makar to bilo nešto malo), učiš onako kako se radi.

A ovo za ispisivanje sadržaja txt fajlova. Da li bi ti txt fajlovi sadržali html?
Ako pokušavaš da odvojiš php od dizajna, već postoji smarty template engine i nije ništa komplikovano. Smile



offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Ne zelim da koristim bazu. Zeleo bih da probam ovo sa php-om zato sto tako mogu da dobijem krace url adrese i mogu sve tekstove da potrpan u jedan direktorijum koji ce da php skripta skenira Smile

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Sta bi ti sadrzavao sam config file?

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Napisano: 21 Nov 2009 13:27

@igor86
Sadrzao bi HTMl meta podatke, putanju do direktorijuma i sl. Taj fajl sam (delimicno) zavrsio:
<?php // Direktorijum sa tekstovima $konfiguracija['base_dir'] = './txt-source'; // Podesavanja vezana za sadrzaj sajta $konfiguracija['site_name'] = ''; $konfiguracija['xml_encoding'] = ''; $konfiguracija['author'] = ''; $konfiguracija['author_name_lang'] = ''; $konfiguracija['xml_lang'] = ''; $konfiguracija['mc_desc'] = ''; $konfiguracija['mc_keywords'] = ''; $konfiguracija['robot_revisit_days'] = '45'; $konfiguracija['robot_crawl_content'] = 'all'; $konfiguracija['styles_dir'] = ''; ?>
Ovo ce da obavalja posao zar ne?

Dopuna: 21 Nov 2009 19:29

uh... Sto mrzim da citam tutorijale...
Elem, malo sam modifikovao "php-txt-reader.php" i evo kako sada izlgeda:
<?php /* Ukljucivanje error reportinga */ error_reporting(E_ALL ^ E_NOTICE); // Funkcija za link parse function link_parse() {   // ovde bi trebala doci petlja za proveru linkova   // Kranji rezultat ide u sledecu promenljivu   //$selected_file = '$txt_path'; } // Funkcija zaduzena za menjanje samog sadrzaja unutar <body> xhtml tagova function html_body() { $selected_file = 'index.txt';   if ($selected_file == undefined)     {       // Ako fajl nije definisan onda trazimo "index.txt"       // Ako "index.txt" ne postoji onda vristimo \o/       if (file_exists($base_dir/index.txt))           { include('$base_dir/index.txt'); }         else           { echo '<br /><strong>!! Greska (404):</strong> Doslo je do greske usled ucitavanja zeljenog sadrzaja! <br /> info: <code><em>index.txt</em> ne postoji</code>'; }     }   else     { // Ako fajl jeste definisan proveravamo ga kako bi videli da li postoji       if (file_exists($selected_file))           { include('$base_dir/$selected_file.txt'); }         else           { echo '<br /><strong>!! Greska:</strong> Doslo je do greske usled ucitavanja zeljenog sadrzaja! <br /> info: <code>greska 404 (sadrzaj ne postoji)</code>'; }     } } ?>

Kako izgleda za sada? Petlja, unutar "html_body()", je prilicno jednostavna pa ne verujem da ce tu biti problema. Na mom racunaru funkcionise Very Happy
btw vidim da postoji prebuilt "empty()" funkcija ali nju ne bih da koristim. Stavise, ne bih da koristim ni "file_exists()" zato sto sam navikao da sam definisem sve unutar skripti (citaj: ne volim bas prebuilt funkcije). To ce biti zamenjeno (ako postoji alternativa uopste).

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Kao sto je @stankovic rekao najbolje ti je da koristis neki template engine, uglavnom napravio sam ti ovo sto si trazio, mada moras biti precizniji za sta bi se sve koristio od cega sama slozenost zavisi.


https://www.mycity.rs/must-login.png

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

@igor86
Nemam reci. Hvala? Neka bude hvala x10 Smile
Koristio bih ovo za licni sajt. Broj tekstova ce da raste vremenom ali nece ih biti vise od 10,000 Mr. Green. Koliko vidim, uradio si sve sto sam ja zeleo i hteo.
Cilj je bio da se ubaci tekst u dir i da, kada taj fajl "pozovem" odredjenim linkom, on ubaci sadrzaj "index.txt" fajla izmedju header-a i footer-a.
Cak rade i "http://SimpleCMS/?s=about" linkovi i ne moram ni da ukljucujem "index.php" u linku Very Happy
Ne treba mu sifra niti ista cime sebe dovodim u opasnost.
Vidim da si sve sam izdefinisao i nisi koristio prebuilded funkcije kao sto je empty(). Odlicno.

Nazalost primecujem gresku. Naime, izgleda da sistem radi samo kada se u url adresi nalazi sufiks "?s=xxx" pa tako kada ucitam sadrzaj sa same strane (recimo: http://localhost/SimpleCMS umesto http://localhost/SimpleCMS/index.php?s=index) izbacuje sledecu gresku:
Notice: Undefined index: s in /home/djura-san/korisnicki-direktorijum/podaci/softver/web/test/SimpleCMS/protected/logic.php on line 19

Izgleda da skripta ocekuje da index uvek sadrzi sufiks "?s=xxx" ili gresim?

p.s. Uopste nisam ni znao da postoji toga ovakvih sistema koi imaju svakave mogucnosti (nisam znao ni kako se to zove Embarassed). Bas citam http://en.wikipedia.org/wiki/Template_engine_%28web%29 i imam sta da vidim. Hvala (@stankovic) za tip.

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

pa u sustini najbolje da pogledas code koji sam ti poslao, uglavnom ako nije zadan page smatra se da je po defaultu index, mislim uci/radi/mjenjaj kako tebi odgovara Wink

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

ok. evo sta je ispravljeno:
$this -> _page = $_GET[$this->_conf->page_param] ? $_GET[$this->_conf->page_param] : 'index'; [red 19] u $this->_page = isset($_GET[$this->_conf->page_param])? $_GET[$this->_conf->page_param] : 'index';

sada radi.

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Napisano: 23 Nov 2009 6:48

Samo si sve izkomplikovao pisajuci kilometarski text kad je sve to moglo da se kaze iz dve reci.... Wink

Dopuna: 24 Nov 2009 14:02

Ivan013 ::Samo si sve izkomplikovao pisajuci kilometarski text kad je sve to moglo da se kaze iz dve reci.... Wink
Tvoj problem mozes resiti na sledeci url:
http://w3schools.com/
samo malo da se potrudis a ne da cekas samo da padne sa neba ili neko da ti napise Very Happy
Kad naucis extra php a naravno za to sto ti hoces
onda mozes da upotrebis mastu sta ces da pravis i da za kraj kada sve to zavrsis opet ce ti trebati baza GUZ - Glavom U Zid Wink
oces neces moraces pravila su pravila Ziveli

Ko je trenutno na forumu
 

Ukupno su 1093 korisnika na forumu :: 45 registrovanih, 6 sakrivenih i 1042 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., AK - 230, Aleksandar Tomić, Apok, Bobrock1, bojank, bokisha253, Bubimir, darkangel, Dežurni pod palubom, draganl, dule10savic, Excalibur13, Fog of War, FOX, Hans Gajger, Kibice, kolle.the.kid, krkalon, Krusarac, kybonacci, laki_bb, lcc, Lucije Kvint, Metanoja, mikrimaus, mnn2, moldway, nemkea71, ozzy, RJ, Srle993, stegonosa, styg, suponik, Suva planina, Tila Painen, vladaa012, vladulns, vukovi, Wrangler, Yellow Pinky, zhuki8, Zoca, zziko