Eli siis jos on kirjautuminen,
käyttäjä syöttää tunnuksen ja salasanan
ja sen jälkeen ohjataan sivulle sivu1.php
Niin onnistuuko (jos tunnukset oikein) niin ohjataan jotnekin muuten kuin header locationilla?
En haluaisi mielellään header locationilla, koska ennen tuota on paljon koodia ja erilaisia sisennyksiä yms. niin koodista tulee turhan sekavaa jos käyn poistaa kaikki tyhjät rivit yms.
Onnistuisiko tehdä heti php-tiedoston alkuun jonkinlainen funktio, esim.
function siirry()
{
header('location: sivu1.php');
}
ja sitten kutsutaan funktiota kohdassa
jos tunnukset oikein -->
siirry();
???
käyttäjä syöttää tunnuksen ja salasanan
ja sen jälkeen ohjataan sivulle sivu1.php
Niin onnistuuko (jos tunnukset oikein) niin ohjataan jotnekin muuten kuin header locationilla?
En haluaisi mielellään header locationilla, koska ennen tuota on paljon koodia ja erilaisia sisennyksiä yms. niin koodista tulee turhan sekavaa jos käyn poistaa kaikki tyhjät rivit yms.
Onnistuisiko tehdä heti php-tiedoston alkuun jonkinlainen funktio, esim.
function siirry()
{
header('location: sivu1.php');
}
ja sitten kutsutaan funktiota kohdassa
jos tunnukset oikein -->
siirry();
???
Vastaukset 12
Vanhimmat
PHP koodissa olevat sisennykset tai rivinvaihdot eivät vaikuta header - funktioon. Lukaiseppa uudelleen tuo: http://fi.php.net/header.
Funktion jälkeen kannattaa käyttää exit funktiota, ettei scriptin suoritus jatku (jos se on muuten mahdollista).
Juu katsoppas http://fi.php.net/manual/en/ref.outcontrol.php tuo laittaa headerin alkuun vaikka lisäisitkin sen lopussa.
Mutta koita tehdä niin, että sulla on PHP ja (x)HTML erikseen, näin muokkaus jne... on myöhemmin helpompaa.
noiden välissä saa olla sisennyksiä jne... koska niitähän ei selaimelle lähetetä. Vain echo ja vastaavat tulostaa ne.
mutta, mutta.. tarkoitatko että PHP ja XHTML olisivat siis eri tiedostoissa?
"mutta, mutta.. tarkoitatko että PHP ja XHTML olisivat siis eri tiedostoissa?"
Kyllä, tai no että sivun logiikka jne... jutut toisessa ja sitten ulkoasuun ja tiedostoon esittämiseen liittyvät jutut toisessa.
Mikäli haluat muuttaa ulkoasuun liittyviä asioita niin se käy helposti template-tiedostoa muokkaamalla, päätätkin että haluat linkit myös RSS muotoon, niin se onnistuu helposti luomalla RSS template.
Myös logiikka muutokset on helppo tehdä kun ei ole mitään XHTML juttuja sotkemassa. Tuo ohjausjuttu ei aiheuttaisi mitään ongelmia.
Yksinkertainen esimerkki
PHP-tiedosto:
Template-tiedosto:
XHTML löpinää
otsikko
lisää löpinää
Millä siis teen nuo template tiedostot?
Olen kuullut Smartysta, erottaako tämä siis
jotenkin automaattisesti koodista PHP:n ja
HTML:n? Jos, niin onko tuo perinteinen windows -ohjelma vai vaatiiko ylimääräistä säätöä?
Sulla muuten oli kyllä ekassa tiedostossa php-koodia ja tokassa html ja php-koodia, joten mikä järki?
"Millä siis teen nuo template tiedostot?"
Ihan samalla ohjelmalla millä tähänkin asti olet tehnyt sivujasi. Itse tykkään käyttää http://www.pspad.com/ joskin tuo on lähinnä vain monipuolinen tekstieditori, joten ihan aloittelijoille ei välttämättä parhain.
"Olen kuullut Smartysta, erottaako tämä siis
jotenkin automaattisesti koodista PHP:n ja
HTML:n?"
Smartyssä templateihin käytetään Smartyn omaa syntaksia joka muistuttaa aikapaljon PHP:n, tuo muunnos täytyy myös tehdä itse. Smartysta ei mielestäni saa mitään hyötyä, vaan joudut opettelemaan uuden syntaksin.
Toki Smarty on silloin hyödyllinen jos monet muokkaa templateja, tällöin ei pääse tekemään haitallista PHP koodia.
"Sulla muuten oli kyllä ekassa tiedostossa php-koodia ja tokassa html ja php-koodia, joten mikä järki?"
Aivan, järki on nimenomaan siinä, että saadaan sivujen toiminnallisuus, logiikka jne... eriytettyä ulkoasusta.
Template tiedostoihin tarvitsee ehtolauseita, silmukoita jne... niin miksi siinä ei käyttäisi PHP:tä?
Tuolloin scriptien muokkaaminen on paljon helpompaa.
Suosittelen tutustumaan MVC-maleihin http://en.wikipedia.org/wiki/Model-view-controller joka on vielä pitemmälle tuosta esimerkistäni.
eli siis tuossa aikaisemmassa esimerkissäsi missä oli .tpl.php -tiedosto ja .php tiedosto, niin template tiedostossa on tuo toiminnallisuus, eli mitä tehdään (kirjoitetan tekstiä html:llä, tulostetaan linkkejä...) ja varsinainen koodi on tuossa php-tiedostossa?
Ymmärsit hieman väärin tai tavallaan oikein.
Toiminnallisuudella tarkoitin esim foorumin tapauksessa viestien hakua tietokannasta, viestien lisäystä sinne jne... toimintoja mitä foorumi tarttee.
Siis periaatteessa scriptit ovat täysin toimivia ilman templatea. Tällöin vain ei mitään tulosteta.
Itse olen käyttänyt .tpl.php ja .php päätteitä sen takia kun .php on standarti, jos taas käyttäisi pelkkää .tpl niin oletuksena sitä ei editori osaa avata.
joo.. jos teen vaikka palautelomakkeen, niin olisiko tällaisessa tapauksessa form -tiedosto eri tiedostossa ja itse skripti joka vastaanottaa tiedot eri tiedostossa?
itseasiassa juuri noin olenkin tehnyt palautelomakkeen. mutta ne ovat olleet nimeltään tyyliin palaute.htm ja vastaanota.php
kuuluisiko hyvään koodaustapaan siis, että nimeäisin ne palaute.tpl.php ja vastaanota.php ?
"jos teen vaikka palautelomakkeen, niin olisiko tällaisessa tapauksessa form -tiedosto eri tiedostossa ja itse skripti joka vastaanottaa tiedot eri tiedostossa?"
Kyllä.
"kuuluisiko hyvään koodaustapaan siis, että nimeäisin ne palaute.tpl.php ja vastaanota.php ?"
Ei tuon nimeämisen tartte olla välttämättä tuommoinen. Tärkeintähän on että nimestä ja päätteestä näkee heti mistä on kyse. Ja itse olen nuo templatet laittanut eri hakemistoon, ja vielä niin että sen alla on hakemistot rss, teksti jne.... siis ne muodot mitä sivuistani kävijöille tarjotaan. Tuolloin on helppo hahmottaa missä muokattava tiedosto on.
Yleensä käytän templatessa samaa nimeä kuin itse scriptissä ja ohjaimessa näin näkee helposti mitkä kuuluu mihinkin. Käytän siis mukautettua MVC:tä.
Mielestäni tuo .htm ei hyvä, sillä tuon sekoittaa helposti staattisiin sivuihin. Siksi olisi hyvä, että templateilla olisi joka yksinöllinen pääte.
Toki tämä on aikapitkälle mielipide asiakin, mitä itse pitää selkeänä.
entäpä jos olisi kaksi formia, vaikkapa siis kirjautumistoiminto sivuille...
Tällöin siis: kirjautuminen (formi) ja rekisteröityminen (formi).
Olisivatko tällöin nuo html:t yhdessä tpl -tiedostossa vai kahdessa tpl -tiedostossa?
Yhdessä, kahdessa tai jopa muussa templatessa riippuen mikä ratkaisu on juuri siihen tarkoitukseen parhain.
Sekä miten haluat formin toimivan jos on kirjaantunut sisälle, näkyykö vaiko piilotetaan jne...