Ik heb een klein, basis CMS systeem gemaakt in perl. Voornamelijk om perl uit te testen.
Het is eenorm eenvoudig, het heeft ook geen admin interface, dus zoals het script nu is
moet je pagina’s meteen in de databank aanmaken.
Hieronder zie je de sourcecode.
#!/usr/bin/perl 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'; <!DOCTYPE="html"> <html> <head> <title>TinyPerlCMS</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta charset="UTF-8" /> </head> <style> body { max-width: 800px; padding: 1em; border: 1px solid black; margin: 0 auto; } img { max-width: 100%; } </style> <body> EOF 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>' } } } $sth->finish(); #footer print <<'EOF'; </body> </html> EOF exit 0;
database structuur:
CREATE TABLE `pages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(64) NOT NULL, -- grote kan aangepast worden `content` varchar(10000) NOT NULL, -- grote kan aangepast worden PRIMARY KEY (`id`) )