scottybwoy Posted August 30, 2006 Share Posted August 30, 2006 I'm using OOP with php 5.1.4 and keep running into page cannot be found error.The trouble is I'm not sure which page either. I had a login page which is bypassed as a session is created so I'll skip that. Then the user should be passed back to home.php as follows :[code]<?php class IntranetUserHomeApp extends PHPApplication { function run() { if (! $this->authorize($this->getSessionField('SESSION_USERNAME'))) { $this->alert('UNAUTHORIZED_ACCESS'); } $this->uid = $this->getUID(); // At this point user is authorized $this->displayHome(); } function authorize() { return TRUE; } function displayHome() { global $HOME_MNGR; global $HOME_TEMPLATE; global $INTRANET_DIR; global $REL_TEMPLATE_DIR; $Template = Template($HOME_TEMPLATE_DIR); $photoFile = sprintf("%s/photo%003d.jpg",$PHOTO_DIR, $this->getUID()); $photo = file_exists($photoFile) ? sprintf("%s/photo%003d.jpg",$REL_PHOTO_DIR,$this->getUID()) : sprintf("%s/%s",$REL_PHOTO_DIR,$DEFAULT_PHOTO); $themeTemplate->set_var('TEMPLATE_DIR', $REL_TEMPLATE_DIR); $themeTemplate->set_var('LEFT_NAVIGATION', $this->themeObj->getLeftNavigation($THEME_TEMPLATE_DIR . '/' . dirname($THEME_TEMPLATE[$this->theme]))); $template = new Template($this->getTemplateDir()); $template->set_file('fh1', $HOME_TEMPLATE); $template->set_block('fh1', 'mainBlock', 'mblock'); $template->set_block('mainBlock', 'navigation', 'mblock'); $now = time(); $template->set_var(array( 'NAME' => $this->getName(), 'CURRENT_DATE' => date('l M d Y', $now), 'HOME_MNGR' => $HOME_MNGR ) ); global $LD_CATEGORY_NAV_DIR, $LD_CATEGORY_NAV_OUTFILE; $fp = fopen($LD_CATEGORY_NAV_DIR.'/'.$LD_CATEGORY_NAV_OUTFILE, "rb"); $contents = fread ($fp, filesize ($LD_CATEGORY_NAV_DIR.'/'.$LD_CATEGORY_NAV_OUTFILE)); $template->set_var('LD_NAV', $contents); global $USER_DB_URL; $user_dbi = new DBI($USER_DB_URL); $thisUser = new IntranetUser($this->dbi, $this->uid); $pref = $thisUser->getPreferences($this->uid); session_register('SESSION_AUTO_TIP_SHOWN'); if (!empty($pref['autotip']) && !($this->getSessionField('SESSION_AUTO_TIP_SHOWN'))) { $this->debug("Show tip window"); $_SESSION["SESSION_AUTO_TIP_SHOWN"] = 1; $template->set_var('JS_TIP_SCRIPT', $this->popAutoTip()); } else { $template->set_var('JS_TIP_SCRIPT', null); } $themeTemplate->set_var('SERVER_NAME', $this->get_server()); $themeTemplate->set_var('BASE_HREF', $REL_TEMPLATE_DIR); $template->set_var('USER_NAME', ucfirst($thisUser->getName())); $themeTemplate->set_var('CONTENT_BLOCK', $template->parse('mblock', 'mainBlock')); $themeTemplate->parse('cnblock', 'contentBlock'); $themeTemplate->parse('mmblock', 'mmainBlock'); $themeTemplate->pparse('output', 'fh'); } function unhtmlentities($string) { $trans_tbl = get_html_translation_table (HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); return strtr ($string, $trans_tbl); }}?>[/code]The functions used in DisplayHome() are set in this file called templates.inc :[code]<?phpclass Template { var $classname = "Template"; /* if set, echo assignments */ var $debug = false; /* $file[handle] = "filename"; */ var $file = array(); /* relative filenames are relative to this pathname */ var $root = "/templates"; /* $varkeys[key] = "key"; $varvals[key] = "value"; */ var $varkeys = array(); var $varvals = array(); /* "remove" => remove undefined variables * "comment" => replace undefined variables with comments * "keep" => keep undefined variables */ var $unknowns = "comment"; /* "yes" => halt, "report" => report error, continue, "no" => ignore error quietly */ var $halt_on_error = "yes"; /* last error message is retained here */ var $last_error = ""; /***************************************************************************/ /* public: Constructor. * root: template directory. * unknowns: how to handle unknown variables. */ function Template($root = "/templates", $unknowns = "comment") { $this->set_root($root); $this->set_unknowns($unknowns); } /* public: setroot(pathname $root) * root: new template directory. */ function set_root($root) { if (!is_dir($root)) { $this->halt("set_root: $root is not a directory."); return false; } $this->root = $root; return true; } /* public: set_unknowns(enum $unknowns) * unknowns: "remove", "comment", "keep" * */ function set_unknowns($unknowns = "keep") { $this->unknowns = $unknowns; } /* public: set_file(array $filelist) * filelist: array of handle, filename pairs. * * public: set_file(string $handle, string $filename) * handle: handle for a filename, * filename: name of template file */ function set_file($handle, $filename = "") { if (!is_array($handle)) { if ($filename == "") { $this->halt("set_file: For handle $handle filename is empty."); return false; } $this->file[$handle] = $this->filename($filename); } else { reset($handle); while(list($h, $f) = each($handle)) { $this->file[$h] = $this->filename($f); } } } /* public: set_block(string $parent, string $handle, string $name = "") * extract the template $handle from $parent, * place variable {$name} instead. */ function set_block($parent, $handle, $name = "") { if (!$this->loadfile($parent)) { $this->halt("subst: unable to load $parent."); return false; } if ($name == "") $name = $handle; $str = $this->get_var($parent); $reg = "/<!--\s+BEGIN $handle\s+-->(.*)\n\s*<!--\s+END $handle\s+-->/sm"; preg_match_all($reg, $str, $m); $str = preg_replace($reg, "{" . "$name}", $str); $this->set_var($handle, $m[1][0]); $this->set_var($parent, $str); } /* public: set_var(array $values) * values: array of variable name, value pairs. * * public: set_var(string $varname, string $value) * varname: name of a variable that is to be defined * value: value of that variable */ function set_var($varname, $value = "") { if (!is_array($varname)) { if (!empty($varname)) if ($this->debug) print "scalar: set *$varname* to *$value*<br>\n"; $this->varkeys[$varname] = "/".$this->varname($varname)."/"; $this->varvals[$varname] = $value; } else { reset($varname); while(list($k, $v) = each($varname)) { if (!empty($k)) if ($this->debug) print "array: set *$k* to *$v*<br>\n"; $this->varkeys[$k] = "/".$this->varname($k)."/"; $this->varvals[$k] = $v; } } } /* public: subst(string $handle) * handle: handle of template where variables are to be substituted. */ function subst($handle) { if (!$this->loadfile($handle)) { $this->halt("subst: unable to load $handle."); return false; } $str = $this->get_var($handle); $str = @preg_replace($this->varkeys, $this->varvals, $str); return $str; } /* public: psubst(string $handle) * handle: handle of template where variables are to be substituted. */ function psubst($handle) { print $this->subst($handle); return false; } /* public: parse(string $target, string $handle, boolean append) * public: parse(string $target, array $handle, boolean append) * target: handle of variable to generate * handle: handle of template to substitute * append: append to target handle */ function parse($target, $handle, $append = false) { if (!is_array($handle)) { $str = $this->subst($handle); if ($append) { $this->set_var($target, $this->get_var($target) . $str); } else { $this->set_var($target, $str); } } else { reset($handle); while(list($i, $h) = each($handle)) { $str = $this->subst($h); $this->set_var($target, $str); } } return $str; } function pparse($target, $handle, $append = false) { print $this->parse($target, $handle, $append); return false; } /* public: get_vars() */ function get_vars() { reset($this->varkeys); while(list($k, $v) = each($this->varkeys)) { $result[$k] = $this->varvals[$k]; } return $result; } /* public: get_var(string varname) * varname: name of variable. * * public: get_var(array varname) * varname: array of variable names */ function get_var($varname) { if (!is_array($varname)) { return $this->varvals[$varname]; } else { reset($varname); while(list($k, $v) = each($varname)) { $result[$k] = $this->varvals[$k]; } return $result; } } /* public: get_undefined($handle) * handle: handle of a template. */ function get_undefined($handle) { if (!$this->loadfile($handle)) { $this->halt("get_undefined: unable to load $handle."); return false; } preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m); $m = $m[1]; if (!is_array($m)) return false; reset($m); while(list($k, $v) = each($m)) { if (!isset($this->varkeys[$v])) $result[$v] = $v; } if (count($result)) return $result; else return false; } /* public: finish(string $str) * str: string to finish. */ function finish($str) { switch ($this->unknowns) { case "keep": break; case "remove": $str = preg_replace('/{[^ \t\r\n}]+}/', "", $str); break; case "comment": $str = preg_replace('/{([^ \t\r\n}]+)}/', "<!-- Template $handle: Variable \\1 undefined -->", $str); break; } return $str; } /* public: p(string $varname) * varname: name of variable to print. */ function p($varname) { print $this->finish($this->get_var($varname)); } function get($varname) { return $this->finish($this->get_var($varname)); } /***************************************************************************/ /* private: filename($filename) * filename: name to be completed. */ function filename($filename) { if (substr($filename, 0, 1) != "/") { $filename = $this->root."/".$filename; } if (!file_exists($filename)) $this->halt("filename: file $filename does not exist."); return $filename; } /* private: varname($varname) * varname: name of a replacement variable to be protected. */ function varname($varname) { return preg_quote("{".$varname."}"); } /* private: loadfile(string $handle) * handle: load file defined by handle, if it is not loaded yet. */ function loadfile($handle) { if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle])) return true; if (!isset($this->file[$handle])) { $this->halt("loadfile: $handle is not a valid handle."); return false; } $filename = $this->file[$handle]; $str = implode("", @file($filename)); if (empty($str)) { $this->halt("loadfile: While loading $handle, $filename does not exist or is empty."); return false; } $this->set_var($handle, $str); return true; } /***************************************************************************/ /* public: halt(string $msg) * msg: error message to show. */ function halt($msg) { $this->last_error = $msg; if ($this->halt_on_error != "no") $this->haltmsg($msg); if ($this->halt_on_error == "yes") die("<b>Halted.</b>"); return false; } /* public, override: haltmsg($msg) * msg: error message to show. */ function haltmsg($msg) { printf("<b>Template Error:</b> %s<br>\n", $msg); }}?>[/code]All my templates are in one folder called templates ;) and the constants are defined in this file here called constants.php :[code]<?php $APPLICATION_CLASS = 'class.PHPApplication.php'; $ERROR_HANDLER_CLASS = 'class.ErrorHandler.php'; $AUTHENTICATION_CLASS = 'class.Authentication.php';// $DBI_CLASS = 'class.DBI.php'; $DEBUGGER_CLASS = 'class.Debugger.php'; $USER_CLASS = 'class.User.php'; $THEME_CLASS = 'class.Theme.php'; $THEME_TEMPLATE_CLASS = 'class.ThemeTemplate.php'; $ACL_CLASS = 'class.ACL.php'; $TEMPLATE_CLASS = 'template.inc'; $TRUE = 1; $FALSE = 0; $ON = 1; $OFF = 0; $SUCCESS = 1; $WWW_NEWLINE = '<BR>'; $NEWLINE = "\r\n"; $TABLE_DOES_NOT_EXIST = 1; $TABLE_UNKNOWN_ERROR = 666; define('LOGIN', 1); define('LOGOUT', 2);?>[/code]and my include path is as follows from config.inc.php :[code]<?php $ROOT_PATH = $_SERVER['DOCUMENT_ROOT']; $INTRANET_DIR = $ROOT_PATH . '/database'; $SCRIPTS = $INTRANET_DIR . '/scripts'; $CLASSES = $INTRANET_DIR . '/classes'; $FORGOTTEN_PASSWORD_APP = $SCRIPTS . '/user_mngr/forgotten_pwd.php'; $PHPLIB_DIR = $INTRANET_DIR . '/library/php'; $PATH = $PEAR_DIR . ';' . $PHPLIB_DIR . ';' . $CLASSES; ini_set( 'include_path', ';' . $PATH . ';' . ini_get('include_path')); $TEMPLATE_DIR = $INTRANET_DIR . '/templates'; $THEME_TEMPLATE_DIR = $INTRANET_DIR . '/templates/themes';?>[/code]Before it was showing the login.html under url of /database/scripts/home/home.php Which is what it should be doing, however now it should just display home.html and bypass the login and redirect to home after creating the session. I know that it has created the session as I can check in the database so I don't know now where it is failing. Can anyboby see where this is happening?Sorry it's a bit of a long one. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.