Vincent Lammens

Tiny perl CMS

, ,

Ik heb een klein, basis CMS systeem gemaakt in perl. Voornamelijk om perl uit te testen.

Het is eenorm eenvoudig, het heeft ook nog geen admin interface, dus zoals het script nu is
moet je pagina’s meteen in de databank aanmaken.

Hieronder zie je de sourcecode.

use warnings;
use strict;
use CGI;
use DBI;

my $driver = "mysql";
my $database = "database_naam";
my $dsn = "DBI:$driver:database=$database";
my $userid = "database_user";
my $password = "database_password";

my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;

my $cgi = CGI->new;
print $cgi->header;

# header
print <<'EOF';
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta charset="UTF-8" />
  body {
    max-width: 800px;
    padding: 1em;
    border: 1px solid black;
    margin: 0 auto;

  img {
    max-width: 100%;

my $p = $cgi->param('p') || '1'; # default id 1, de homepage

my $sth = $dbh->prepare("SELECT content, title
                        FROM pages
                        WHERE id = ? LIMIT 1"); #limit 1, voor de zekerheid
$sth->execute( $p ) or die $DBI::errstr;
if ($sth->rows == 0){
print "<h1>Error 404: Page not found</h1><p>The page you where looking for was not found. <a href='?p=1'>Go to the homepage</a></p>";
} else {
  while (my @row = $sth->fetchrow_array()) {
     my ($content, $title ) = @row;
     print "<h1>$title</h1>\n $content\n";
     if ($p != '1'){ # check als het niet de homepage is, om link naar homepage te tonen
     print '<a href="?p=1">Back</a>' 

print <<'EOF';

exit 0;

database structuur:

CREATE TABLE `pages` (
  `title` varchar(64) NOT NULL, -- grote kan aangepast worden
  `content` varchar(10000) NOT NULL, -- grote kan aangepast worden
  PRIMARY KEY (`id`)