Страница 1 из 1

php?action=

Добавлено: 12 сен 2005, 20:53
Duncon
Люди вобщем вот примерчик, типа при вызове elseif не пашет.
Я вызываю это так:
на след. страницу

Как реализовать подобные вызовы?
или же лучше когда вызов идет во так: 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) {

}
}
?>
[/color]

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

Добавлено: 13 сен 2005, 09:54
Absurd
По моему лучше так

Код: Выделить всё

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

Добавлено: 13 сен 2005, 10:04
Duncon
Народ не обламайте, напишите способы полностью, а то у меня есть мания тупить на простом.

А насчет конструкции у меня идет вызов 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' не существует");
			}
		}
	}
[/color]

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