$prop) { $diff = array_diff(array_keys($prop),$max_prop_arr); foreach($diff as $key) { trigger_error("unknown dbobj config option '$key'=>".var_export($prop[$key],1)." in '$className' class, '$propName' property",E_USER_ERROR); } } return $conf; } dbobj::$connectionParameters = array( 'local' => array( 'driver' => 'pgsql', 'dsn' => 'host=localhost', 'username' => 'dbobjdev', 'password' => 'dbobjdev', ), ); class user extends dbobj { static $dbobj_config = array('table'=>'users', 'conn' => 'local', 'properties'=>array( 'id'=>array('type'=>'serial', 'autoID'=>true, 'read_access'=>'public'), 'name'=>array('type'=>'varchar(25)', 'read_access'=>'public'), 'pass'=>array('type'=>'varchar(32)'), 'email'=>array('type'=>'varchar(125)', 'read_access'=>'public') ), ); function __construct($name, $pass, $email) { $this->name = $name; $this->pass = md5($pass); $this->email = $email; } function newpass($oldpass,$newpass) { if(md5($oldpass) != $this->pass) { echo "Wrong password!"; break; } $this->pass = md5($newpass); } } class post extends dbobj { static $dbobj_config = array('table'=>'post', 'conn' => 'local', 'properties'=>array( 'id'=>array('type'=>'serial', 'autoID'=>true, 'read_access'=>'public'), 'user_id'=>array('type'=>'integer'), 'user'=>array('sources'=>'user_id','type'=>'>user(id)', 'read_access'=>'public'), 'title'=>array('type'=>'varchar(255)', 'read_access'=>'public'), 'body'=>array('type'=>'text', 'read_access'=>'public'), ), ); function __construct($user, $title, $body) { $this->user = $user; $this->title = $title; $this->body = $body; $this->save(); } } session_start() || die('session_start error'); echo ''. ''. ''. 'dbobj powered forum'. ''. ''; echo '

Forum



'; /** Debug register ** $_REQUEST['action']='register'; $_REQUEST['name'] = 'testuser'; $_REQUEST['pass'] = 'apple'; $_REQUEST['email'] = 'a@b.c'; /** Debug post ** $_REQUEST['action']='post'; $_SESSION['user'] = dbobj_find('user',array('id'=>14)); $_REQUEST['title'] = 'test'; $_REQUEST['body'] = 'Hello World!'; /** Debug delete ** $post = dbobj_find('post',array('id'=>31)); $post->delete_on_save(true); $post->save(); /** Body **/ switch(@$_REQUEST['action']) { case 'logout': $_SESSION['user'] = null; break; case 'login': $users = dbobj_find('user', array('name'=>$_REQUEST['name'],'pass'=>md5($_REQUEST['pass']))); if(!$users){ echo "Bad username/pass!"; } else { $_SESSION['user'] = $users->current(); } break; case 'register': if(dbobj_find('user',array('name'=>$_REQUEST['name']))) { echo "This username is in use!"; } else { $_SESSION['user'] = new user($_REQUEST['name'],$_REQUEST['pass'],$_REQUEST['email']); } break; } if(!empty($_SESSION['user'])) { $u = $_SESSION['user']; echo 'Hello, '.$u->name.'!'. ' [logout]

'; } else { echo '
'. 'username: '. 'password: '. ''. '


'; echo '
'. 'username: '. 'password: '. 'e-mail: '. ''. '


'; } switch(@$_REQUEST['action']) { case 'newpass-show': echo '
'. 'current password: '. 'new password: '. 'confirm new password: '. ''. '

'; case 'newpass': if(empty($_REQUEST['newpass1'])) break; if($_REQUEST['newpass1'] != $_REQUEST['newpass2']) { echo "Passwords no not match!"; break; } $_SESSION['user']->newpass($_REQUEST['oldpass'],$_REQUEST['newpass1']); break; case 'post': if(!@$_SESSION['user']) break; new post($_SESSION['user'],$_REQUEST['title'],$_REQUEST['body']); break; case 'delete': if(!@$_SESSION['user']) break; $post = dbobj_find('post',array('id'=>$_REQUEST['id'])); $post->delete_on_save(true); $post->save(); } echo '
'; /*** display posts ***/ $posts = dbobj_find('post'); foreach($posts as $post) { echo ''; } echo '
'; echo '

'.$post->user->name.':'.$post->title.'

'; if(@$_SESSION['user']) echo '[delete]
'; echo '

'.$post->body.'

'; echo '
'; if(empty($_SESSION['user'])) { echo 'Registration required for new post.'; } else { echo '
'. 'title:
'. ''. ''. '


'; } /* * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */ ?>