Ja en, ik weet wat een CMS is, maar hoe maak je er een?

dinsdag, 03 november 2009 | door +Sigrid de Jong | Reacties staat uit voor Ja en, ik weet wat een CMS is, maar hoe maak je er een? |

 

Je maakt een database waar  je de inhoud van je website in stopt. Met inhoud bedoel ik de teksten op je website, de titels van je pagina’s enz.

Daarna maak je een PHP script dat de database uitleest en de inhoud presenteert in de website. Als je dit eenmaal hebt dan maak je een aparte pagina waarin je de inhoud van je database kunt aanpassen. Om te voorkomen dat wildvreemden de inhoud van je website gaan aanpassen doe je dat achter een wachtwoord. Je maakt een loginpagina en omdat op elke nieuwe pagina en na iedere klik opnieuw inloggen niet echt handig is werk je met sessies. Als je dat allemaal werkend hebt dan ga je er beveiligingen inbouwen, je zorgt ervoor dat bepaalde tekens niet geplaatst kunnen worden enz. Je kunt je CMS eindeloos uitbreiden met zoveel functies als je maar kunt bedenken.

Het maken van de database:

Ga naar je phpmyadmin, als je op je lokale server werkt dan ga je naar: http://localhost/phpMyAdmin/ en op de hoofdpagina zie je “nieuwe database aanmaken”. Daarin vul je cms in en je klikt op aanmaken. Als je dat hebt gedaan, dan heb je een lege database. Die database gaan we nu vullen met een tabel, in het veld: “Nieuwe tabel aanmaken in database” vul je inhoud in. Daarnaast moet je aangeven hoeveel velden je tabel moet hebben, type hierin 3 en klik op aanmaken.

Nu kun je de namen van de velden invullen. Het eerste noem je id en het type zet je op tinyint en de lengte/waarde zet je op 3. Het volgende veld noem je menu_item en het type varchar met lengte/waarde 128. Het laatste veld noem je tekst en type text. Als je dit hebt ingevuld dan klik je op opslaan.

Je ziet nu de MySQL om de tabel te maken, als je deze code rechtstreeks in SQL invoert dan maak je ook een tabel:

`id` TINYINT( 3 ) NOT NULL ,
`menu_item` VARCHAR( 128 ) NOT NULL ,
`tekst` TEXT NOT NULL


Je hebt nu een tabel in je databse gemaakt en die gaan we nu gebruiken.

We gebruiken het veld id om de pagina’s van elkaar te onderscheiden en daarom is het handig om die een unieke waarde te geven, dat doe je door op het icoontje voor unike value te klikken.

Nu is het ook wel handig om de tabel alvast een beetje te vullen, dan kun je straks de inhoud van de database weergeven. Om de tabel te vullen klik je op invoegen en je vult wat teksten in en daarna klik je op start. Je kunt de inhoud van je tabel zien door op verkennen te klikken.

Uitlezen van de database.

Oke, je hebt nu een database waar de inhoud van je pagina’s instaat. Nu gaan me die met php uitlezen.

Kopieer het volgende script en bewaar het als index.php op de plaats waar je je cms wilt hebben. Ik heb hem in de map cms onder localhost gezet. De uitleg van het script staat in de code zelf.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">

<html>

<head>

<title></title>

</head>

<body>

<?php

//******** Contact met de database ********

//De variabelen van database als je de database op de localhost hebt.

$host="localhost"; //host van de database

$database="cms"; // naam van de database

$user="root"; //gebruikersnaam van de database

$wachtwoord=""; // wachtwoord van de database

// Hier maken we een verbinding met de server

$connection = mysql_connect($host, $user, $wachtwoord)

or die ("Kan geen verbinding met de server maken, omdat:" . mysql_error());

// Hier selecteren we de goede database //En weer een foumelding als het niet lukt.

$cms = mysql_select_db($database, $connection) or die ("Kan de database niet selecteren.");

//********* De pagina's*********

//Het menu

echo "<ul>";

$query="select * from inhoud";

$resultaat = mysql_query($query);

while($rij = mysql_fetch_array($resultaat))

{

$id=$rij['id'];

$menu_item=$rij['menu_item'];

echo "<li><a href=\"?id=$id\">$menu_item</a></li>";

};

echo "</ul>";

//id van de pagina uit de url uitlezen, als er geen id nummer in de url staat dan de homepage weergeven.

$id=(isset($_GET['id'])) ? $_GET['id'] : '0';

//Inhoud van de pagina uit de database ophalen

$query="select tekst from inhoud where id='$id'";

$resultaat = mysql_query($query);

while($rij = mysql_fetch_array($resultaat))

{

$inhoud = $rij['tekst'];

echo $rij['tekst'];

};

?>

</body>

</html>

 

 

 

 

//Uitloggen
if($knop == “Loguit”){
$_SESSION[‘login’]=0;
}

En dan heb je een aparte pagina nodig om de teksten aan te passen en dat moet beveiligd zijn met een wachtwoord. Kopieer het volgende script en bewaar het als admin.php op de zelfde plek waar je ook de index.php hebt bewaard.

<?php

//******* Inloggen & sessies*******/

// Het hele sessie gedeelte moet voor alle html staan!

// start de sessie

session_start();

$sessionid = session_id();

$_SESSION['login'];

//inloggen

//De waarden voor gebruikersnaam en wachtwoord, je kunt ze ook in de database zetten in een aparte tabel.

$gebruikersnaam="admin";

$wachtwoord="wachtwoord";

$gn=$_POST['gn'];

$ww=$_POST['ww'];

if($gebruikersnaam == $gn && $wachtwoord == $ww){

$_SESSION['login']=1;

}else{ }

//Als de sessie login 1 is dan ben je ingelogd en als de sessie login 0 is dan ben je niet ingelogd.

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">

<html>

<head>

<title></title>

</head>

<body>

<?php

//******** Contact met de database ********

//De variabelen van database als je de database op de localhost hebt.

$host="localhost"; //host van de database

$database="cms"; // naam van de database

$user="root"; //gebruikersnaam van de database

$wachtwoord=""; // wachtwoord van de database

// Hier maken we een verbinding met de server

$connection = mysql_connect($host, $user, $wachtwoord)

or die ("Kan geen verbinding met de server maken, omdat:" . mysql_error());

// Hier selecteren we de goede database //En weer een foumelding als het niet lukt.

$cms = mysql_select_db($database, $connection) or die ("Kan de database niet selecteren.");

//Als je niet ingelog bent het inlogscherm tonen.

if ($_SESSION['login']=="0"){

?>

<form method="post" action="">

<input type="name" name="gn"><br>

<input type="name" name="ww">

<input type="submit" value="Inloggen">

</form>

<?php

}else{//als je wel bent ingelogd de pagina laten zien.

//********* De pagina's *********

//Het menu

echo "<ul>";

$query="select * from inhoud";

$resultaat = mysql_query($query);

while($rij = mysql_fetch_array($resultaat))

{

$id=$rij['id'];

$menu_item=$rij['menu_item'];

echo "<li><a href=\"?id=$id\">$menu_item</a></li>";

};

echo "</ul>";

//id van de pagina uit de url uitlezen, als er geen id nummer in de url staat dan de homepage weergeven.

$id=(isset($_GET['id'])) ? $_GET['id'] : '0';

//Inhoud van de pagina uit de database ophalen

$query="select menu_item, tekst from inhoud where id='$id'";

$resultaat = mysql_query($query);

while($rij = mysql_fetch_array($resultaat))

{

$menu_item = $rij['menu_item'];

$tekst = $rij['tekst'];

};

//Formulier om de inhoud van de database aan te passen

?>

<form method="post" action="">

Menu_item:<br>

<input type="name" name="menu_item" value="<?php echo $menu_item; ?>">

<br>Tekst<br>

<textarea rows="6"  name="tekst">

<?php echo $tekst; ?>

</textarea>

<br>

<input type="submit" name="knop" value="Wijzig">

<input type="submit" name="knop" value="Nieuw">

<input type="submit" name="knop" value="Verwijder">

<hr>

<input type="submit" name="knop" value="Loguit">

</form>

<?php

//**** script om de acties uit het formulier uit te voeren: ******

//Het formulier uitlezen

$menu_item=$_POST['menu_item']; echo $menu_item;

$tekst=$_POST['tekst']; echo $tekst;

$knop=$_POST['knop'];

//wijzigen van de inhoud van een pagina

if ($knop == "Wijzig"){

$sql_update="UPDATE inhoud SET menu_item='$menu_item',

tekst='$tekst' WHERE id=$id;";

echo $sql_update;

$uitvoer = mysql_query ($sql_update) or die (mysql_error ());

}

//Nieuwe pagina toevoegen

if ($knop == "Nieuw"){

//maximale id waarde uit de database halen.

$sql="SELECT max( id ) FROM inhoud ";

$result=mysql_query($sql);

$ja=mysql_fetch_array($result);

$maxid=$ja[0];

//de nieuwe id wordt 1 hoger dan de maximale id.

$id=$maxid + 1;

$sql_insert="INSERT INTO inhoud (id, menu_item, tekst)

VALUES ('$id', '$menu_item', '$tekst');";

$uitvoer = mysql_query ($sql_insert) or die (mysql_error ());

}

//Pagina verwijderen

if ($knop == "Verwijder"){

$sql_delete="DELETE FROM inhoud WHERE id=$id;";

$uitvoer = mysql_query ($sql_delete) or die (mysql_error ());

}

}//einde else van inloggen

//Uitloggen

if($knop == "Loguit"){

$_SESSION['login']=0;

}

?>

</body>

</html>

Hmm, ik heb zo min mogelijk code gebruikt maar zie dat het toch nog aardig lang is geworden.

Hiermee heb je de basis voor je CMS. Nu kun je er een stylesheet bij maken, de php en de html codes scheiden door een template engine te gebruiken, nog meer velden in je tabel voegen, nog meer functies schrijven, beveiligingen inbouwen (b.v. dat je bepaalde html code niet in de tekst mag schrijven, enz.

Wel, have fun en ik hoop dat je er iets aan hebt.

 

 

 

 


Begin reactie formulier

Reacties zijn gesloten.


Heldere Ster | © 2010-2012 door +Sigrid de Jong, Alle rechten voorbehouden. |