Leer een website bouwen met PHP in 5 minuten

2010 03 04 door monchito

php codeEen collega vroeg me gisteren of ik hem in 5 minuten kon uitleggen hoe je met PHP een website kunt bouwen.

Toen ik na 5 minuten klaar was gaf hij aan dat het duidelijk was, dus als het voor hem duidelijk is dan is het mogelijk ook handig voor anderen :)

Download

Ik heb de bestandjes bij elkaar geplaatst zodat je het kunt downloaden. In uitleg.html staat dit hele verhaal nog eens. Let op dat je het bestandje 'htaccess' voorziet van een punt, de naam moet gewijzigd worden naar '.htaccess'!

Download alle scripts

Hieronder staat een heel eenvoudig stappenplan waarmee je het volgende bereikt:

Het stappenplan

  • een manier om met 1 HTML template meerdere pagina's te maken;
  • zoekmachine-vriendelijke urls;
  • een correcte 404 pagina voor als er wat mis gaat;
  • een homepage en een willekeurige andere pagina; in dit voorbeeld 'info'.

En ja, natuurlijk kun je websites veel uitgebreider maken. Dit is een startpunt, maar ook een werkwijze waarmee ik menig website in het verleden zeer snel in elkaar gezet heb, zonder een CMS. Voor de web developers: dit plus een template van oswd.org zorgt ervoor dat je binnen 2 uur een volledige website inclusief layout afhebt.

De teksten

Je begint met een bestandje waarin je alle teksten, metatitles, descriptions etc plaatst. Ik noem het teksten.inc.php, het tekstbestandje dat ik 'include':


bestandsnaam: teksten.inc.php

<?php
// leeg? dan is het de homepage
if($_GET['p'] == '') {
    $title = 'home';
    $h1 = 'home h1';
    $tekst = 'tekst home';
}
// index.php?p=info, of: /info/? Dan deze tekst gebruiken
elseif($_GET['p'] == 'info'){
    $title = 'info';
    $h1 = 'info h1';
    $tekst = 'info tekst';
}
// andere gevallen bestaan niet en dus 404
else {
    $header = '404';
    $title = '404 title';
    $h1 = '404 h1';
    $tekst = '404 tekst';
    header("HTTP/1.1 404 Not Found"); // server foutmelding voor 404 pagina
}
?>

Dit kun je uiteraard uitbreiden met meer teksten, paginas etc. Let erop dat aanhalingstekens (') voorzien worden van een \'. Dus niet: $tekst = 'dit is een 'quote'';, maar: $tekst = 'dit is een \'quote\'';.

De HTML template

Vervolgens maak je een bestandje genaamd index.php aan, waarin de HTML template staat en waarbij afhankelijk van de url die iemand opvraagt de content van die pagina getoond wordt:


Bestandsnaam: index.php

<?php
// de teksten inladen
require_once("teksten.inc.php");
?>
<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
        <h1><?php echo $h1; ?></h1>
        <p><?php echo $tekst; ?></p>
    </body>
</html>

Als iemand index.php opvraagt, wordt bij $title, $h1 en $tekst de content getoond die ik ingevuld had onder if($_GET['p'] == '') {. Als iemand index.php?p=info opvraagt, wordt bij $title 'info' ingevuld etc. Als er iets niet klopt, wordt er een 404 pagina getoond, inclusief HTTP statuscode die nodig is om ervoor te zorgen dat de pagina niet geïndexeerd wordt door Google & co.

Zoekmachine vriendelijke urls

Zoekmachines kunnen lelijke urls zoals ik ze hier maak prima volgen, maar 'vriendelijke urls' zien er beter uit en klikken ook beter, dus vandaar dat je bijvoorbeeld http://www.jesite.nl/index.php?p=info liever wil wijzigen naar http://www.jesite.nl/info.

Dat kan eenvoudig met een rewriteregel in het bestandje .htaccess, dat er als volgt uitziet:


Bestandsnaam: .htaccess

RewriteEngine on
RewriteRule ^([a-zA-Z0-9-] )/?$ index.php?p=$1

Als iemand nu /info opvraagt, dan weet de site nu dat eigenlijk index.php?p=info opgevraagd wordt, maar dat laat ie niet zien. In plaats daarvan wordt /info ook getoond, inclusief de bijbehorende tekst. Daarnaast worden alleen pagina's met alfanumerieke karakters (a-zA-Z0-9-) geaccepteerd. Dat voorkomt fouten.

Goed, het kostte me 20 minuten om dit artikel te schrijven, maar slechts 5 minuten om een werkend prototype te maken en uit te leggen hoe het werkte. Doe er je voordeel mee en laat me weten wat je ervan vindt!

Interessant?

Lees dan ook eens meer artikelen over ...

Reacties

Jos

door Jos, 2010 03 04

Ja, maar waar is het CMS?

monchito

door monchito, 2010 03 04

@Jos: je CMS is teksten.inc.php :)

Thomas Lenting

door Thomas Lenting, 2010 03 04

Goed artikel.Ik stop de naam/waarde-paren meestal in een array. In de template zet ik dan '[naam]', die ik laat replacen. Op die manier kun je de code en template nog meer scheiden.De if-else structuur kan een hele lange lijst worden; dan kun je voor de leesbaarheid beter een switch-statement gebruiken met per 'case' de aanroep naar functies die de array teruggeven.

monchito

door monchito, 2010 03 04

@Thomas: klopt helemaal en thnx!arrays zijn een stap verder en heb ik bewust achterwege gelaten :)

Marcel

door Marcel, 2010 03 04

Goed, duidelijk artikel. Net zo duidelijk als je uitleg van gisteren ;)THX!

Ruud Kok

door Ruud Kok, 2010 03 04   Ruud Kok

Leuk artikel, alleen de inhoud van teksten.inc.php zou ik zelf liever in een database zetten, dat is (zeker wanneer de schaal wordt vergroot) overzichtelijker dan een hele lange lijst if-else statements.

monchito

door monchito, 2010 03 04

@Ruud: uiteraard, maar kun jij dat aan iemand uitleggen in 5 minuten? ;)

door , 2010 03 05

Goede uitleg Ramon. zove heb ik mijn eerste php site nog niet gemaakt ;) Waar ik wel benieuwd naar ben is hoe de php database werkt ipv de teksten.inc.php.

monchito

door monchito, 2010 03 05

@Niels dat is iets lastiger uitleggen, maar ook niet lastig hoor, maar dan moet je wel een database aanmaken, connectie maken, uitlezen, in array stoppen, array printen ... Is iets lastiger :)

Ruben

door Ruben, 2010 03 14

Zo kan het ook inderdaad, heerlijk eenvoudig.@monchito ligt er natuurlijk aan wie je tegenover je hebt zitten :)

Martin

door Martin, 2010 04 03   Martin

Haha, zo simpel kan het gewoon zijn. Nu nog de tekst mooi weergeven. Binnenkort een artikel over CSS in 5 minuten? =)Ik heb thuis ook nog een dik boek over PHP staan wat ik ooit eens wil gaan lezen.

monchito

door monchito, 2010 04 06

@Martin: moet je doen; is het waard!

huidspecialist

door huidspecialist, 2010 08 15   huidspecialist

@Martin: wat is de titel van dat boek over PHP?

jasonz

door jasonz, 2010 08 31

Volgens mij is het een hele duidelijke tutorial alleen gek genoeg heb ik zoals beschreven alle bestanden aangemaakt maar krijg ik bij het openen van de index.php enkel: [html] [head] [title][/title] [/head] [body] [h1][/h1] [p][/p] [/body] [/html] te zien...

Doe ik iets fout?

Vincent

door Vincent, 2010 09 09   Vincent

=$h1?>
=$tekst?>

Ramon Eijkemans

door Ramon Eijkemans, 2010 09 20   Ramon Eijkemans

@Jasonz @Vincent: er zit een foutje in de code die erin geslopen is toen ik monlog migreerde naar het nieuwe platfrm. Dat ga ik snel fixen! (deze week nog)

@Jasonz: die code zoals die er nu staat werkt even niet, ik fix het, je doet niets fout ;)

Ramon Eijkemans

door Ramon Eijkemans, 2010 10 05

@Jasonz @Vincent de code is gefixt. Je kunt de bestanden nu kopieren en op je webserver plaatsen; zou moeten werken ;)

Vincent

door Vincent, 2010 10 05

dat ziet er inderdaad een stuk beter uit ;)

vincent

door vincent, 2010 10 05

A, ik zie al wat er gebeurd. Je strip de html tags helemaal weg uit de posts.

Je zou html_entities() kunnen proberen, zodat de html tags die mensen posten (om wat uit te leggen ofzo) in tact blijven...

Ramon Eijkemans

door Ramon Eijkemans, 2010 10 05

@Vincent thnx, ja dit is niet een nieuw systeem en die HTML editor is nog een beetje... overijverig :) Ben nog ff bezig met de bestandjes te testen en ze bij elkaar in een download zipfiletje te zteten. Da's wellicht handiger ;)

Dj

door Dj, 2011 07 09

heey dit is 1ste keer dat ik eens wil proberen een website te maken...
maar ik snap er niks van!

Ramon Eijkemans

door Ramon Eijkemans, 2011 07 09

Dan kun je beter bij het absolute begin beginnen DJ

zie http://www.w3schools.com/

Rants/opmerkingen/suggesties?

*
*

Wat is MONLOG

Sinds 2002 is MONLOG het weblog van Ramon Eijkemans, freelance SEO-gun for hire.

Dit weblog bevat how-to's, mijmeringen, soms wat humor. Het gaat vrijwel altijd over SEO. Ik herhaal geen nieuws. Het doel van dit weblog is om jou van praktische en doordachte informatie te voorzien!

En dan nog dit: guestpostings zijn welkom! Mail me als je je ei kwijt wil op dit goed rankende podium.

Laatste comments

@Aartjan: ik heb hetzelfde met 'lekker kontje' :)...
25.11.2011 door Ramon Eijkemans op Ranken op Banaan

Bij mij is 'banaan' toevallig al jaren het zoekwoord waar ik...
23.11.2011 door Aartjan van Erkel op Ranken op Banaan

Gewoon maken waar vraag naar is. Dat is zo oud als de weg...
22.11.2011 door Thomas op Ranken op Banaan

Een banaan natuurlijk :)
09.11.2011 door Ramon Eijkemans op Ranken op Banaan

In welk tineu zien we jou terug binnenkort?
09.11.2011 door Emiel op Ranken op Banaan

@Simme @Navin proost! :)
07.09.2011 door Ramon Eijkemans op Vakantie!

Zo maak je mij wel erg jaloers :)
05.09.2011 door Navin Poeran op Vakantie!

12 bier geeft plezier.en veel succes gewenst tijdens de tw...
31.08.2011 door simme op Vakantie!

@Willem: ik denk op de manier zoals ik in dit artikel...
20.08.2011 door Ramon Eijkemans op Faceted search & SEO: vloek of zegen?

Goed en interessant artikel. Wat mij vooral bezighoudt, is...
20.08.2011 door Willem Hoekstra op Faceted search & SEO: vloek of zegen?