Cao. Evo odradio sam frontend. Ovih dana cu da odradim backend.
Naravno ovo je sve jos uvek u startnoj fazi.
Posto budem odradio backend, pocecu da prosirujem.
@Tudfa: Config klasa je naravno dobro dosla, samo mislio sam da prvo idemo polako sa onim najosnovnijim, i onda da polako dodajemo malo interesantnije stvari :) (kao sto je config :) )
Dok sam pravio front naleteo sam na par greski u prethodnim klasama tako da cu ih ponovo postovati.
Unapred se izvinjavam na ponovnom postovanju istih klasa.
Tree construction
Code:
- base
-- class.db.php
-- class.session.php
-- class.urlhandler.php
- css
-- content.css
-- global.css
-- menu.css
- pages
-- skelet
--- footer.php
--- header.php
--- menu.php
-- gallery.php
-- home.php
-- contact.php
- uploads
-- pictures
--- test_photo_1.png
- contact.php
- gallery.php
- index.php
./base/class.db.php File
Code:
<?php
/**
* Class for DB management. In here we will create connection to our DB and execute queries.
* This is just basic class which will be changed later. All errors will be handled later.
* @version 0.2 beta
* @author www.elitesecurity.org (written by member b0ris)
*/
class DB{
/**
* Connection parameter which holdes information about host account
* @access private
* @name host
*/
private $db_host = "";
/**
* Connection parameter which holdes information about password
* @access private
* @name password
*/
private $db_password = "";
/**
* Connection parameter which holdes information about data base to which we are going to connect.
* @access private
* @name database
*/
private $db_database = "";
/**
* Connection parameter which holdes user information.
* @access private
* @name user
*/
private $db_user = "";
/**
* MYSQL Link indentifier
* @access private
* @name linkId
*/
private $db_linkId = 0;
/**
* In here we will set up inital settings for database and connect to our DB
* @param string host host to define
* @param string user username used to connect to database
* @param password password used for connection
* @param databse database name used for connection
* @return bool|MYSQL_Link returns bool if something went wrong or MYSQL Link if everything went ok
*/
function DB($host, $user, $password, $database){
/**
* Setting up parameters
*/
$this->db_host = $host;
$this->db_user = $user;
$this->db_password = $password;
$this->db_database = $database;
/**
* Establishing connection
*/
return $this->connect();
}
/**
* Creating mysql connection.
* @return bool connection established or not
* @version 1.01 Removed checkup for password since password can also be empty. :| Yea ppl use this sometimes also.
*/
function connect(){
/**
* Checking if everything is filled up so we can establish connection.
* We can also use empty() function in this if statment.
*/
if(($this->db_host != "") && ($this->db_user != "") && ($this->db_database != "")){
$this->db_linkId = mysql_connect($this->db_host, $this->db_user, $this->db_password);
if(!$this->db_linkId){
/**
* Handle error.
*/
return false;
}else{
if(!@mysql_select_db($this->db_database, $this->db_linkId)){
/**
* Handle error.
*/
return false;
}
}
return true;
}else return false;
}
/**
* Executing query.
* @param string query Query for mysql
* @return mysql_result|die_msg Return result of query or error message
* @version 1.01 Removed die. It was returning bool instead of mysql_result
*/
function query($query){
return mysql_query($query, $this->db_linkId);
}
/**
* Executing query.
* @param string query Query for mysql
* @return array Returns result of query in array
* @version 1.01 Update in while statement. We were executing query each time we went through while (Infinite loop)
*/
function getrows($query){
/**
* Query result array
*/
$myRes = array();
/**
* Running thorough results and storing them in our result array
*/
$res = $this->query($query);
while($row = mysql_fetch_array($res)){
$myRes[] = $row;
}
return $myRes;
}
}
?>
./base/class.session.php File
Code:
<?php
/**
* Class for session management. It will be used to put in and take out values from session.
* This is just basic class which will be changed later. All errors will be handled later.
* @version 0.1 beta
* @author www.elitesecurity.org (written by member b0ris)
*/
class Session{
/**
* @desc To be defined later.
*/
function Session(){
}
/**
* @desc Places value under desired name into session. This will be an array.
* @param string name Name under which value will be remembered.
* @param string|int value Value which will be saved under name.
*/
function addValue($name, $value){
$_SESSION[$name][] = $value;
}
/**
* @desc Returns value or array, depending on how many values are stacked under same name.
* If name does not exist program will be terminated.
* @param strin name Name under which value or values are stacked.
* @return string|int|array
*/
function getValue($name){
/**
* Does given name exists?
*/
if(isset($_SESSION[$name])){
/**
* If there is only one value in array we will return it. If more we will return whole array.
*/
if(count($_SESSION[$name]) == 1) return $_SESSION[$name][0];
else return $_SESSION[$name];
}
/**
* No! We should handle an error here.
*/
else return false;
}
/**
* @desc This method will remove all the values under given name.
*/
function removeValue($name){
unset($_SESSION[$name]);
}
/**
* @desc This method will start up session. It should only be called after all the classes are loaded, and before any output begins.
*/
function startSession(){
session_start();
}
}
?>
./base/class.urlhandler.php File
Code:
<?php
/**
* Class for url management. This class will take all the parameters and give them back in one unified way.
* Functions which will process all $_SERVER data should be created here.
* This is just basic class which will be changed later. All errors will be handled later.
* @version 0.1 beta
* @author www.elitesecurity.org (written by member b0ris)
*/
class urlHandler{
/**
* @desc Contains all POST values in an array.
* @access private
* @name post_vars
*/
private $post_vars;
/**
* @desc Contains all GET values in an array.
* @access private
* @name get_vars
*/
private $get_vars;
/**
* @desc In here we will catch all the post and get variables and process them.
* We will add this checkups when we create security class.
*/
function __construct(){
}
/**
* @desc Will be processed upon creation of security class.
*/
private function processGet(){
}
/**
* @desc Will be processed upon creation of security class.
*/
private function processPost(){
}
/**
* @desc Returns value this regarding the method.
* If values have the same name, then second parameter can be used to define a method.
* @param string name Takes name of the value
* @param post|get method Type of parameter which you want to take. Can be Post or Get.
* @return string
*/
function getValue($name, $method=""){
if(!$method){
if(isset($_POST[$name])) return $_POST[$name];
if(isset($_GET[$name])) return $_GET[$name];
}
else{
$var = '_'.$method;
if(isset($$var[$name])) return $$var[$name];
}
}
/**
* @desc Process domain name and returns domain name.
* @return string Domain name
*/
function getDomainName(){
return $_SERVER['HTTP_HOST'];
}
/**
* @desc Used to create url links. To be build up more later.
* For now it is good to use it because all links will be created through this function, so when we do some changes to url
* we will only do it in this function.
* @param string page_name Name of the page.
* @return string Url
*/
function createUrl($page_name){
return $page_name;
}
}
?>
./css/content.css File
Code:
#content{
clear:both;
text-align:left;
}
./css/global.css File
Code:
BODY, TD {
font-family: Verdana;
font-size:11px;
text-align:center;
background-color: #F2F2F2;
}
A {
text-decoration:none;
color:#FFB900;
}
A:Hover {
color:silver;
}
./css/menu.css File
Code:
#menu{
clear:both;
margin: 0 auto;
text-align: left;
width:300px;
}
#menu_option{
float:left;
width:100px;
}
#menu A{
font-weight: bold;
}
./pages/skelet/footer.php File
Code:
<?php echo "\n"; ?>
<!-- We can place some code here which is needed on every page (for example google analytics code -->
</body>
</html>
./pages/skelet/header.php File
Code:
<?php
/**
* @desc Here we will include everything we need for any page. Attention to SEO (search engine optimization)
* will be established latter when we move page display into data base. NOTE: Short tags are not used on purpose.
*/
// Including all the classes we need to display a page. Instead of including this classes one by one each time
// we could also use _autoload method which php provides
include "./base/class.urlhandler.php";
include "./base/class.db.php";
include "./base/class.session.php";
// Creating instance of urlHandler which we will use later.
$url = new urlHandler();
// Creating instance of db (connection to data base)
if(!$db = new DB("localhost", "root", "", "elitesecurity")){ echo "Could not connect to database!";exit(1);}
// Creating instance of session and starting up the session (note: session must start before any display happens.
// Be sure that you dont have enter (\n) as startup char. This can create errors.)
$session = new Session();
$session->startSession();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="sr">
<meta name="author" content="elitesecurity">
<!-- <meta http-equiv="Reply-to" content="@.com"> -->
<meta name="generator" content="Elitesecurity CMS <boris vujicic>">
<meta name="description" content="Home page, test page for basic CMS">
<meta name="keywords" content="">
<meta name="creation-date" content="09/20/2007">
<meta name="revisit-after" content="15 days">
<title>Home</title>
<link rel="stylesheet" type="text/css" href="./css/global.css">
<link rel="stylesheet" type="text/css" href="./css/menu.css">
<link rel="stylesheet" type="text/css" href="./css/content.css">
</head>
<body>
./pages/skelet/menu.php File
Code:
<?php
/**
* @desc Creating menu. Latter we will create dynamic page creation.
*/
?>
<div id="menu">
<div id="menu_option"><a href="index.php">Home</a></div>
<div id="menu_option"><a href="gallery.php">Gallery</a></div>
<div id="menu_option"><a href="contact.php">Contact</a></div>
</div>
<br/><br/>
./pages/contact.php File
Code:<?php
/**
* @desc Simple page which is using urlhandler class.
*/
// Getting email and msg values which are posted and storing those values in corresponding variables.
$email = $url->getValue("email");
$msg = $url->getValue("msg");
// Checking if values aer empty
if($msg != "" && $email != ""){
// Do something. For example send email
/*
if(mail("
[email protected]", "Contact", "Email:$email<br/>\n".$msg)){
echo "Message sent.";
}else{
// Handle error.
}
*/
echo "Message sent.";
}
?>
<div id="content">
<form action="contact.php" method="post">
Email: <input type="text" name="email" id="email" /><br/><br/>
Message: <br/>
<textarea cols="50" rows="5" name="msg"></textarea><br/><br/>
<input type="submit" value="Ask us?" />
</form>
</div>
./pages/gallery.php File
Code:
<?php
/**
* @desc Simple page which is using db class.
*/
?>
<div id="content">
<?php
// Setting up parameter which will tell us if we have any pictures in database.
$haspictures = false;
// Executing query
$pictures = $db->getrows("SELECT * FROM pictures");
// did we got something back?
if($pictures) $haspictures = true;
// We did. Ooo looky looky we have some photos :) Lets display them.
if($haspictures){
foreach($pictures as $key => $value){
echo "<div id=\"img\"> <img src=\"./uploads/pictures/{$pictures[$key]['picture_name']}\" alt=\"{$pictures[$key]['picture_name']}\"/></div>";
}
}else{?>
<p> Currently there are no pictures. </p>
<?php }?>
</div>
./pages/home.php File
Code:
<?php
/**
* @desc Just some content without any php.
*/
?>
<div id="content">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum pellentesque sem. Praesent purus dui, cursus eu gravida sit amet, elementum eu justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse sed ante at tellus pulvinar elementum sit amet vel ante. Nulla in arcu sit amet lacus placerat pulvinar consectetur non justo. Donec risus erat, sagittis at aliquet eget, faucibus sit amet ante. Morbi ultrices purus et nunc sagittis ultrices. Vivamus auctor facilisis volutpat. Fusce vel diam massa. Vestibulum fringilla pretium rutrum. Ut eros velit, dignissim sit amet sollicitudin nec, eleifend malesuada tellus. Ut in laoreet velit. Nulla lobortis tincidunt velit, ac congue dui ullamcorper ut. Aliquam commodo urna non sapien ornare nec placerat lacus eleifend. Quisque ut velit lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p><p>
Nulla eget turpis a tellus porttitor ultricies. Vestibulum ut ultricies justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum urna dui, sollicitudin eu consectetur nec, posuere sit amet eros. Donec in erat ut elit euismod elementum. Pellentesque vel arcu odio. Aliquam fermentum cursus erat ac egestas. Sed vel malesuada nunc. In volutpat, sem nec dictum suscipit, tortor magna volutpat sem, nec dictum diam metus vel diam. Vestibulum fringilla nulla vitae leo euismod nec commodo libero ullamcorper. Nulla facilisi. Curabitur tempus urna at felis iaculis elementum. Praesent a metus nulla. Duis consectetur, neque ut varius venenatis, diam justo tristique nisi, et ultrices turpis lorem a ante. Quisque sit amet magna leo. Etiam vel mi diam, quis ullamcorper diam. Vestibulum vitae nisl odio.
</p><p>
Maecenas tellus ante, rhoncus dictum ullamcorper nec, accumsan vitae diam. Etiam vitae enim metus, id luctus eros. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse fermentum diam a est dictum sit amet commodo sapien venenatis. Duis dignissim bibendum elit, sit amet sodales est fermentum id. Aliquam scelerisque dignissim elit, sed aliquet ligula cursus vitae. Mauris lectus nulla, porttitor interdum placerat quis, lacinia ut nisl. Quisque porta consectetur velit at ornare. Etiam in enim ut sem mattis porta. Donec ac purus magna. Morbi tellus felis, convallis at placerat vitae, facilisis in nunc. In ipsum tortor, hendrerit a interdum non, facilisis mattis felis.
</p><p>
Donec viverra mollis nibh id convallis. In lobortis, sapien elementum pulvinar tempus, lacus nibh semper massa, congue pharetra mauris ligula quis mi. Phasellus placerat euismod sagittis. Nullam ornare, massa eleifend iaculis aliquet, lacus urna vestibulum enim, a scelerisque nisi nisl nec elit. Duis dolor nibh, volutpat eget adipiscing sed, aliquam eget sapien. Etiam in pretium purus. Morbi odio leo, lobortis et rutrum tincidunt, pharetra eget mauris. Donec lobortis turpis vel elit elementum rhoncus. Phasellus vitae arcu dolor. Aenean eget lacus nibh, eu rutrum ipsum. Pellentesque mollis leo condimentum dui commodo iaculis. Quisque rutrum lorem nec nibh mattis malesuada. In hac habitasse platea dictumst. Duis nec purus purus. Suspendisse fermentum porta nibh, quis vulputate magna pellentesque vitae. Curabitur eu tortor eu quam tincidunt egestas ac sit amet mauris.
</p><p>
Maecenas tempus nibh eget augue fringilla at egestas enim ultrices. In a velit gravida mi sodales vehicula. In vestibulum elementum velit sit amet luctus. Vestibulum et auctor ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec et lectus eget sapien porttitor porttitor pretium sit amet ligula. Sed et erat in quam bibendum aliquet. Integer porttitor pellentesque nulla, quis vestibulum lectus ultricies sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras ut augue augue. In eget accumsan leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis diam velit, non ultrices quam. Curabitur vitae urna nec lorem adipiscing tincidunt id id velit. Aliquam blandit ornare metus, sed adipiscing diam feugiat vitae. Mauris hendrerit hendrerit turpis, id feugiat mi interdum nec.
</p>
</div>
contact.php File
Code:
<?php
include "./pages/skelet/header.php";
include "./pages/skelet/menu.php";
include "./pages/contact.php";
include "./pages/skelet/footer.php";
?>
gallery.php File
Code:
<?php
include "./pages/skelet/header.php";
include "./pages/skelet/menu.php";
include "./pages/gallery.php";
include "./pages/skelet/footer.php";
?>
index.php File
Code:
<?php
include "./pages/skelet/header.php";
include "./pages/skelet/menu.php";
include "./pages/home.php";
include "./pages/skelet/footer.php";
?>
SQL
Code:
pictures CREATE TABLE `pictures` (
`picture_id` int(10) unsigned NOT NULL auto_increment,
`picture_name` varchar(255) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`picture_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
---------------------------------------------------------------------
Just do it.