Permalänk
Medlem

Synpunkter på webbplats

Hej!

Jag håller på arbeta på en liten hemsida och skulle gärna vilja ha era synpunkter. Jag har inte kommit särskilt långt men vill gärna ha kritik på vad jag gjort hittills, i första hand koden nedan. Alla synpunkter är dock välkomna.
Funktionsregistret är begränsat till basala saker som registrering och in-/utloggning.
Anledningen till att jag inte använder Wordpress eller dylikt är helt enkelt för att jag vill göra det själv, även om det inte blir lika bra gjort, och lära mig lite på vägen.

Till webbplatsen!
Logga in som demo/demo eller skapa en användare. Notera att namnet och epostadressen du väljer skrivs ut på testsidan.

Jag hoppas koden är tillräckligt självförklarande

engine.php

<?php /** * Engine * * @version $Id$ * @copyright 2006 */ session_start(); $module_dir = 'modules/'; $template_dir = 'templates/'; require_once 'config.php'; require_once 'inc/db.php'; require_once 'inc/base.php'; require_once 'inc/cleanup.php'; if ($_SESSION['logged_in']) { $puser = new User; $puser->set('id', $_SESSION['user_id']); $puser->fetch(); } /* Load requested page. */ $requested_page = get_var('page') or $requested_page = 'default'; if ($requested_page) { /* Load templating functions. */ require $template_dir . 'templating.php'; /* Load modules for requested page. */ $file = $module_dir . $requested_page . '.php'; if (file_exists($file)) require $file; /* Load template. */ $page['name'] = $requested_page; $page_file = $template_dir . $requested_page . '.php'; if (file_exists($page_file)) require $page_file; }

User.php

<?php /** * User class * * @version $Id$ * @copyright 2006 */ class User { /* Database fields. */ private $id; private $username; private $password; private $realname; private $email; private $registered; private $ip; private $last_seen; private $query_fields; function __construct() { } private function __set($name, $value) { $this->$name = $value; $this->sql_fields(); } private function __unset($name) { unset($this->$name); $this->sql_fields(); } function set($var, $val) { $this->__set($var, $val); } /** * add() * * Add user to database. */ function add() { global $db; $sql = 'INSERT INTO users VALUES ( NULL, "' . $this->username . '", "' . $this->password . '", "' . $this->realname . '", "' . $this->email . '", "' . $this->registered . '", "' . $this->ip . '", "' . $this->last_seen . '" )'; $db->query($sql) or new Exception('Could not add user.'); } /** * delete() * * Delete user from database. */ function delete() { global $db; $sql = 'DELETE FROM users WHERE id="' . $this->id . '" LIMIT 1'; $db->query($sql) or new Exception('Could not delete user.'); } /** * fetch() * * Fetch user from database. */ function fetch() { if (isset($this->id)) $user = id2user($this->id); else if (isset($this->username) && !isset($this->password)) $user = username2user($this->username); else { global $db; $sql = 'SELECT * FROM users WHERE ' . $this->query_fields . ' LIMIT 1'; $res = $db->query($sql); if (PEAR::isError($res)) die($res->getMessage()); else $res->fetchInto($user); } if (isset($user['id'])) $this->id = $user['id']; if (isset($user['username'])) $this->username = $user['username']; if (isset($user['password'])) $this->password = $user['password']; if (isset($user['realname'])) $this->realname = $user['realname']; if (isset($user['email'])) $this->email = $user['email']; if (isset($user['registered'])) $this->registered = $user['registered']; if (isset($user['ip'])) $this->ip = $user['ip']; if (isset($user['last_seen'])) $this->last_seen = $user['last_seen']; } /** * valid() * * Returns true if current user is valid. */ function valid() { if (isset($this->id)) $user = id2user($this->id); else if (isset($this->username) && !isset($this->password)) $user = username2user($this->username); else { global $db; $sql = 'SELECT * FROM users WHERE ' . $this->query_fields . ' LIMIT 1'; $res = $db->query($sql); if (PEAR::isError($res)) die($res->getMessage()); else $res->fetchInto($user); } if ($user['password'] == $this->password) { $return = true; } else $return = false; return $return; } /** * sql_fields() * * Set fields to use in query. If id is set, it will be the only field used. */ function sql_fields() { if (isset($this->id)) $sql = 'id="' . $this->id . '"'; else if (isset($this->username)) if (isset($this->password)) { $sql = 'username="' . $this->username . '" AND password="' . $this->password . '"'; } else $sql = 'username="' . $this->username . '"'; else { if (isset($this->password)) $fields[] = 'password="' . $this->password . '"'; if (isset($this->realname)) $fields[] = 'realname="' . $this->realname . '"'; if (isset($this->email)) $fields[] = 'email="' . $this->email . '"'; if (isset($this->registered)) $fields[] = 'registered="' . $this->registered . '"'; if (isset($this->ip)) $fields[] = 'ip="' . $this->ip . '"'; if (isset($this->last_seen)) $fields[] = 'last_seen="' . $this->last_seen . '"'; $sql = implode(' AND ', $fields); $sql = preg_replace('/ AND $/', '', $sql); } $this->query_fields = $sql; } /** * login() * * Login user. */ function login() { global $db; $now = time(); if (!isset($this->ip)) { $this->ip = $_SERVER['REMOTE_ADDR']; } $ip = $this->ip; $sql = 'UPDATE users SET ip="' . $ip . '", last_seen="' . $now . '" WHERE id="' . $this->id . '" LIMIT 1'; $res = $db->query($sql); if (PEAR::isError($res)) die($res->getMessage()); $_SESSION['logged_in'] = true; $_SESSION['user_id'] = $this->id; } /** * logout() * * Logout user. */ function logout() { unset($_SESSION['logged_in']); unset($_SESSION['user_id']); } function username() { $return = $this->username or $return = false; return $return; } function last_seen() { $return = $this->last_seen or $return = false; return $return; } function realname() { $return = $this->realname or $return = false; return $return; } function __destruct() { } }

En template-fil. (default.php)

<?php /** * Template **/ $page['title'] = 'hem'; require "header.php"; ?> <div id="container"> <?php gen_header(); ?> <?php gen_main_nav(); ?> <?php gen_info_board(); ?> <div id="main" class="clearfix hollyhack"> <div id="sidebar"> <ul class="box" ><li><a href="#i1">Luctus id, vehicula ut</a></li ><li><a href="#i2">Pellentesque it</a></li ><li><a href="#i3">Nam accumsan</a></li ></ul> </div> <!--// sidebar --> <div id="content"> <div class="chapter"> <h2 id="i1">Luctus id, vehicula ut</h2> <p>Lorem ipsum...</p> </div> </div> <!--// content --> </div> <!--// main --> <?php gen_common_footer(); ?> </div> <!--// container --> <?php require "footer.php";

Visa signatur

"'We're pro-life.' Eww, you look it! You look like you're filled with life."
UNIX man pages online, GNU/Linux-schemaprogram för LiU