Gå til innhold

Hvilke funksjoner anbefaler dere i et enkelt CMS?


Anbefalte innlegg

jeg skal ha et enkelt CMS på hjemmesiden min hvor jeg skal ha dette designet på databasen, iallefall på de tabellene jeg skal lage selv. jeg har tenkt på følgende innhold:

 

Den delen som redigerer inholdet skal ha følgende funksjoner:

- redigere alle artikler.

- lage nye artikler/sider

- slette sider/artikler

- lage nye sider/artikler

- mulighet for å publisere/linke til en side på FB.

 

Den delen hvor en kan laste opp inhold skal ha følgende funksjonalitet:

- laste opp filer (det skal være begrnsninger på hva slags filer, størrelse osv).

- mulighet for å slette eksisterende filer.

 

Brukeradministrasjon

- to typer roller - en for å redigere inhold og en "gjestebruker" som har tilgang til begrenset innhold.

- meldinger/mail til andre brukere

- todo-lists

 

Sessions - hele innloggingssiden skal styres med sessions for å hindre uautorisert adgang. noen tips for å hindre hijacking?

 

jeg skal ikek ha mulighet for en bloggefunksjon, iallefall ikke enda. jeg skal heller ikke ha mulighet for å legge inn kommentarer på de forskjellige sidene.

 

er det noen som ser noe funksjonalitet som jeg burde ha tatt med?

Endret av ilpostino
Lenke til kommentar
Videoannonse
Annonse

Sikkerhet er viktig. Som han over nevner så er det smart å unngå xss angrep, så det som da kan gjøres er at hvær enkelt side bruker "require_once" mot en core fil.

 

Diverse smarte ting å få med, i en core fil..:)

// Unngå mulige XSS angrep via $_GET.
foreach ($_GET as $check_url) {
if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) ||
	(eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) ||
	(eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) ||
	(eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) ||
	(eregi("\"", $check_url))) {
die ();
}
}
unset($check_url);

//~Ren url~
function cleanurl($url) {
$bad_entities = array("&", "\"", "'", '\"', "\'", "<", ">", "(", ")", "*");
$safe_entities = array("&", "", "", "", "", "", "", "", "", "");
$url = str_replace($bad_entities, $safe_entities, $url);
return $url;
}

function trimlink($text, $length) {
$dec = array("\"", "'", "\\", '\"', "\'", "<", ">");
$enc = array(""", "'", "\", """, "'", "<", ">");
$text = str_replace($enc, $dec, $text);
if (strlen($text) > $length) $text = substr($text, 0, ($length-3))."..";
$text = str_replace($dec, $enc, $text);
return $text;
}

 

Så, vil jeg annbefale å ha et simpelt gallerisystem med i den lille CMSen. Og muligheter bbkoder, om du ikke planlegger å bruke noe annet, tinymce o.l..

 

Om du velger å ha et galleriskript, så er denne smart:

// Skanne bilder for onnskapsfulle koder!
function verify_image($file) {
$txt = file_get_contents($file);
$image_safe = true;
if (preg_match('#&(quot|lt|gt|nbsp);#i', $txt)) { $image_safe = false; }
elseif (preg_match("#&\#x([0-9a-f]+);#i", $txt)) { $image_safe = false; }
elseif (preg_match('#&\#([0-9]+);#i', $txt)) { $image_safe = false; }
elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $txt)) { $image_safe = false; }
elseif (preg_match("#([a-z]*)=([\`\'\"]*)javascript:#iU", $txt)) { $image_safe = false; }
elseif (preg_match("#([a-z]*)=([\'\"]*)vbscript:#iU", $txt)) { $image_safe = false; }
elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $txt)) { $image_safe = false; }
elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $txt)) { $image_safe = false; }
elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset)[^>]*>#i", $txt)) { $image_safe = false; }
return $image_safe;
}

 

 

Diverse bbkoder..:

function bbcode($text) {
$text = preg_replace('#\[b\](.*?)\[/b\]#si', '<b>\1</b>', $text);

$text = preg_replace('#\[i\](.*?)\[/i\]#si', '<i>\1</i>', $text);
$text = preg_replace('#\[u\](.*?)\[/u\]#si', '<u>\1</u>', $text);
$text = preg_replace('#\[center\](.*?)\[/center\]#si', '<center>\1</center>', $text);

$text = preg_replace('#\[url\]([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\";\+]*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\'>\2\3</a>', $text);
$text = preg_replace('#\[url\]([\r\n]*)([^\s\'\";\+]*?)([\r\n]*)\[/url\]#si', '<a href=\'http://\2\' target=\'_blank\'>\2</a>', $text);
$text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\";\+]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\'>\4</a>', $text);
$text = preg_replace('#\[url=([\r\n]*)([^\s\'\";\+]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'http://\2\' target=\'_blank\'>\3</a>', $text);

$text = preg_replace('#\[mail\]([\r\n]*)([^\s\'\";:\+]*?)([\r\n]*)\[/mail\]#si', '<a href=\'mailto:\2\'>\2</a>', $text);
$text = preg_replace('#\[mail=([\r\n]*)([^\s\'\";:\+]*?)\](.*?)([\r\n]*)\[/mail\]#si', '<a href=\'mailto:\2\'>\3</a>', $text);

$text = preg_replace('#\[small\](.*?)\[/small\]#si', '<span class=\'small\'>\1</span>', $text);
$text = preg_replace('#\[color=([a-zA-Z]*|\#?[0-9a-fA-F]{6})](.*?)\[/color\]#si', '<span style=\'color:\1\'>\2</span>', $text);
$text = preg_replace('#\[size=([2-7]{1})](.*?)\[/size\]#si', '<font size=\'\1\'>\2</font>', $text);

$text = preg_replace('#\[flash width=([0-9]*?) height=([0-9]*?)\]([^\s\'\";:\+]*?)(\.swf)\[/flash\]#si', '<object classid=\'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\' codebase=\'http://active.macromedia.com/flash6/cabs/swflash.cab#version=6,0,0,0\' id=\'\3\4\' width=\'\1\' height=\'\2\'><param name=movie value=\'\3\4\'><param name=\'quality\' value=\'high\'><param name=\'bgcolor\' value=\'#ffffff\'><embed src=\'\3\4\' quality=\'high\' bgcolor=\'#ffffff\' width=\'\1\' height=\'\2\' type=\'application/x-shockwave-flash\' pluginspage=\'http://www.macromedia.com/go/getflashplayer\'></embed></object>', $text);
$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<img src=\'\\1'.str_replace(array('.php','?','&','='),'','\\3').'\\4\' style=\'border:0px\'>'",$text);

$qcount = substr_count($text, "[quote]"); $ccount = substr_count($text, "[code]");
for ($i=0;$i < $qcount;$i++) $text = preg_replace('#\[quote\](.*?)\[/quote\]#si', '<div class=\'quote\'>\1</div>', $text);
for ($i=0;$i < $ccount;$i++) $text = preg_replace('#\[code\](.*?)\[/code\]#si', '<div class=\'quote\' style=\'width:440px;white-space:nowrap;overflow:auto\'><code style=\'white-space:nowrap\'>\1<br><br><br></code></div>', $text);

$text = descript($text,false);

return $text;
}

 

 

Brukernavnet som er lagret i cookien til brukeren, er tilsvarende den fra databasetabellen, så jeg valgte å lage et slikt skript i min core fil.

//Lager en fuksjon for å fetche brukerinfo fra DB
session_start();
require_once "var.php";
  $select_user = "SELECT * FROM `users` WHERE username='$_SESSION[username]'";
  $user = mysql_query($select_user);
  $udata = mysql_fetch_array($user);

// DENNE delen er bare eks på admin versus ikke admin
define("iGUEST",$udata['user_rank'] == 0 ? 1 : 0);
define("iUSER", $udata['user_rank'] >= 101 ? 1 : 0);
define("iBOSS", $udata['user_rank'] >= 102 ? 1 : 0);

 

Kaster meg nå, håper dette var til noe hjelp.. :) Hater selv å starte fra scratch uten hjelp når det må til (: Men, noe sier meg at du gjerne kan dette selv. Men, eyyyYyYY! Nå har jeg gjort det for deg :D

Endret av slacky
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...