PDA

Просмотр полной версии : php?action=



Duncon
12.09.2005, 19:53
Люди вобщем вот примерчик, типа при вызове elseif не пашет.
Я вызываю это так:
на след. страницу (ХХ.php?action=info)

Как реализовать подобные вызовы?
или же лучше когда вызов идет во так: www/info/


<?php
include_once("defvar.inc");
require_once "class.Template.php";
creation_archive($maxmsgarch, $maxfilearch, $fread, $fpost, $finfo, $php_self);
if (!$page) $page = 1;
$listing = ceil(sizeof($fread)/$limit);
//////////////////////////////////////////////////////////////////////////////
if (($action != "print") && ($action != "send") && ($action != "info")) {
//////////////////////////////////////////////////////////////////////////////
$tpl = new Template("./inc");
$tpl->load("main,styles,counters,banner.top,menu.vert");
$title = "my title";
ob_start();
include "./inc/banner.top.tpl";
$content = ob_get_contents();
ob_end_clean();
eval("\$menu_vert = \"".$tpl->get("menu.vert")."\";");
eval("\$banner_top = \"".$tpl->get("banner.top")."\";");
eval("\$counters = \"".$tpl->get("counters")."\";");
eval("\$styles = \"".$tpl->get("styles")."\";");
eval("print \"".$tpl->get("main")."\";");
}
///////////////////////////////////////////////////////////////////////////////
elseif ($action == "info") {
///////////////////////////////////////////////////////////////////////////////
$tpl = new Template("./inc");
$tpl->load("main,styles,counters,banner.top,menu.vert");
$title = "my title";
ob_start();
include "./inc/banner.top.tpl";
$content = ob_get_contents();
ob_end_clean();
eval("\$menu_vert = \"".$tpl->get("menu.vert")."\";");
eval("\$banner_top = \"".$tpl->get("banner.top")."\";");
eval("\$counters = \"".$tpl->get("counters1")."\";");
eval("\$styles = \"".$tpl->get("styles")."\";");
eval("print \"".$tpl->get("main")."\";");

}





///////////
elseif ($action == "print") {

}
elseif ($action == "send") {
if ($redirect) {

}
}
?>

berkut
12.09.2005, 21:09
в начале var_dump($action);
hint: register_globals
и скажи пожалуйста, зачем нужны такие конструкции:
eval("\$menu_vert = \"".$tpl->get("menu.vert")."\";");

Absurd
13.09.2005, 08:54
По моему лучше так


require('actions/'.$_POST['action'].'.php');

Duncon
13.09.2005, 09:04
Народ не обламайте, напишите способы полностью, а то у меня есть мания тупить на простом.

А насчет конструкции у меня идет вызов require_once "class.Template.php";
ну и там вот эта замечательная функция, точнее класс, весь смысл сего вызов шаблона в котором построена структура и из нее подгружаются различные переменные в виде файлов,
в конструкцие вводишь переменные и он их по идее должен перегружать еще не проверл, на этой зябе встал.



class Template {
var $m_rootDir = ".";
var $m_win32 = false;
var $m_extension = "tpl";
var $m_die = true;
var $m_error = "";
var $m_templates = array();
var $m_showErrors = true;
function Template ($dir = ".") {
$this->setDir($dir);
}
function setDir($dir = ".") {
$trailer = substr($dir, -1);
if(!$this->m_win32) {
if((ord($trailer)) != 47) $dir = "$dir".chr(47);
if(is_dir($dir)) $this->m_rootDir = $dir;
else {
$this->m_rootDir = "";
$this->error("'$dir', не является директорией");
}
} else {
if((ord($trailer)) != 92) $dir = "$dir".chr(92);
$this->m_rootDir = $dir;
}
}
function load($names, $addslashes = true) {
$namesarray = explode(",", $names);
while (list($key, $name) = each($namesarray)) {
$file = $this->m_rootDir.$name.".".$this->m_extension;
if(is_file($file)) {
if($this->isLoaded($name)) $this->warning("Шаблон $name уже загружен");
$this->m_templates["$name"] = join("", file($file));
if($addslashes) {
$this->m_templates["$name"] = addslashes($this->m_templates["$name"]);
}
} else {
$this->error("Шаблон '$file' не существует");
}
}
}

Duncon
14.09.2005, 07:13
Народ всем спасибо, после долгих мучений засек детскую ошибку, все и так работало...