Bonjour,
Je me suis connecté sur mon site cette après midi et j'ai constaté les messages d'erreur suivant:
Warning: Cannot modify header information - headers already sent by (output started at /homez.548/daymbenh/www/ndxzsite/plugin/format.visual_index.php:751) in /homez.548/daymbenh/www/ndxzstudio/lib/page.php on line 92
.
Warning: Cannot modify header information - headers already sent by (output started at /homez.548/daymbenh/www/ndxzsite/plugin/format.visual_index.php:751) in /homez.548/daymbenh/www/index.php on line 166
.
Je suis un total débutant, je n'ai pas du tout l'habitude de coder et ne comprend quasiment rien au jargon utilisé dans d'autre forum se rapprochant de mon problème.
J'ai utilisé indexhibit pour faire mon site et le seul moment où j'ai utilisé du code, c'est en modifiant le fichier style.css pour changer les couleurs des textes des fonds de texte etc.
Autre chose, ce matin j'ai été attaqué par un virus, mais je pense que c'est réglé, donc je ne sais pas si ça a eu une incidence sur ce problème.
Je demande votre aide et aussi votre patience pour m'expliquer le plus clairement que vous pourrez mon problème.
Merci


voici le fichier page.php
<?php if (!defined('SITE')) exit('No direct script access allowed');


/**
* Frontend template class
*
* Used for generating frontend template
* (This really needs some work still - but it's functional for now)
* 
* @version 1.0
* @author Vaska 
*/
class Page
{
	public $result 		= array();
	public $exhibit 		= array();
	public $lib_js_add;
	public $exhibitz 		= array();
	public $protected 		= false;
	public $last_visit;
	public $cached 		= true;
	public $js_lib_table 	= array();
	public $js_jquery_table 	= array();
	public $js_jquery_onready_table = array();
	public $js_prototype_table = array();
	public $js_prototype_onready_table = array();
	public $version = '';
	public $parsed = false;
	
	/**
	* Returns results array and exhibition plugin
	*
	* @param void
	* @return mixed
	*/
	public function Page()
	{	
		$OBJ =& get_instance();

		//$this->result = $OBJ->vars->exhibit;
		if (isset($OBJ->vars->exhibit['version']))
		{
			$this->version = '?v=' . $OBJ->vars->exhibit['version'];
		}
		
		//if (isset($OBJ->vars->exhibit['ajax']))
		//{
			//if ($OBJ->vars->exhibit['ajax'] == false)
			//{
				// init the format
			//	$this->loadExhibit();
			//}
		//}
	}
	
	public function version()
	{
		return $this->version;
	}
	
	
	public function get_imgs()
	{
		$OBJ =& get_instance();
		global $default;

		//////////////////
		// load the interface
		$OBJ->lib_interface('filesource');

		// implement the interface
		$class = 'filesource' . $default['filesource'][$OBJ->vars->exhibit['media_source']];
		$F =& load_class($class, true, 'lib');

		// get our output
		return $F->getDisplayImages();
		//////////////////
	}
	
	
	/**
	* Returns void
	*
	* @param void
	* @return void
	*/
	public function last_visit()
	{
		// TEMPORARY!
		date_default_timezone_set('America/New_York');
		
	setcookie('ndxz_last', getNow(), time()+3600*24*365, '/');
	}
	
	/**
	* Returns exhibition format parameters
	*
	* @param void
	* @return string
	*/
	public function init_page()
	{
		$exhibit = array();
		
		$OBJ =& get_instance();
		
		// let's keep track of visits
		$this->last_visit();
		
		// what about section passwords?
		if ($OBJ->vars->exhibit['sec_pwd'] != '')
		{
			$this->cached = false;
	
			$page = 'ndxz_sec_' . $OBJ->vars->exhibit['secid'];
			
			if (isset($_POST['ndxz_sec_pwd_sbmt']) && ($_POST['ndxz_hid'] == ''))
			{
				// it matches the password
				if (md5($_POST['ndxz_sec_pwd']) == md5($OBJ->vars->exhibit['sec_pwd']))
				{
					// set the cookie for one day
					setcookie($page, md5($_POST['ndxz_sec_pwd']), time()+3600*24, '/');
					
					// do we need to do a redirect here then?
					header('location:' . BASEURL . $OBJ->vars->exhibit['url']);
				}
				else // it does not
				{
					$this->protected = true;

					$out = $this->sec_password();
					$out .= "<p>Incorrect.</p>\n";
					
					$OBJ->page->exhibit['exhibit'] = $out;
					$OBJ->page->exhibit['lib_css'][] = "security.css";
					return;
				}
			}
			elseif (isset($_COOKIE[$page]))
			{	
				// it doesn't match the password
				if ($_COOKIE[$page] != md5($OBJ->vars->exhibit['sec_pwd']))
				{
					$this->protected = true;
					$OBJ->page->exhibit['exhibit'] = $this->sec_password();
					$OBJ->page->exhibit['lib_css'][] = "security.css";
					return;
				}
			}
			else
			{
				$this->protected = true;
				$OBJ->page->exhibit['exhibit'] = $this->sec_password();
				$OBJ->page->exhibit['lib_css'][] = "security.css";
				return;
			}
		}
		else
		{
			// built-in password check
			// checks only the active page
			if ($OBJ->vars->exhibit['pwd'] != '')
			{
				$this->cached = false;
	
				$page = 'ndxz_page_' . $OBJ->vars->exhibit['id'];
			
				if (isset($_POST['ndxz_pwd_sbmt']) && ($_POST['ndxz_hid'] == ''))
				{
					// it matches the password
					if (md5($_POST['ndxz_pwd']) == md5($OBJ->vars->exhibit['pwd']))
					{
						// set the cookie for one day
						setcookie($page, md5($_POST['ndxz_pwd']), time()+3600*24, '/');
					
						// do we need to do a redirect here then?
						header('location:' . BASEURL . $OBJ->vars->exhibit['url']);
					}
					else // it does not
					{
						$this->protected = true;

						$out = $this->password();
						$out .= "<p>Incorrect.</p>\n";
					
						$OBJ->page->exhibit['exhibit'] = $out;
						$OBJ->page->exhibit['lib_css'][] = "security.css";
						return;
					}
				}
				elseif (isset($_COOKIE[$page]))
				{	
					// it doesn't match the password
					if ($_COOKIE[$page] != md5($OBJ->vars->exhibit['pwd']))
					{
						$this->protected = true;
						$OBJ->page->exhibit['exhibit'] = $this->password();
						$OBJ->page->exhibit['lib_css'][] = "security.css";
						return;
					}
				}
				else
				{
					$this->protected = true;
					$OBJ->page->exhibit['exhibit'] = $this->password();
					$OBJ->page->exhibit['lib_css'][] = "security.css";
					return;
				}
			}
		}
	}
	
	
	// occoasionally handy functions
	public function sysvar($name='')
	{
		$OBJ =& get_instance();
		
		if (isset($OBJ->vars->exhibit[$name]))
		{
			return $OBJ->vars->exhibit[$name];
		}
	}
	
	
	public function changevar($name='', $value='')
	{
		$OBJ =& get_instance();
		
		if (isset($OBJ->vars->exhibit[$name]))
		{
			$OBJ->vars->exhibit[$name] = $value;
		}
	}
	
	
	public function makevar($name='', $value='')
	{
		$OBJ =& get_instance();
		
		if (!isset($OBJ->vars->exhibit[$name]))
		{
			$OBJ->vars->exhibit[$name] = $value;
		}
	}
	

	/**
	* Password check
	*
	* @param string $function
	* @return string
	*/
	public function sec_password()
	{
		$out = "<form name='ndxz_protect' id='ndxz-protect' method='post' action=''>\n";
		$out .= "<p>Password Protected Section</p>\n";
		$out .= "<p>Enter Password</p>\n";
		$out .= "<p><input name='ndxz_sec_pwd' type='text' maxlength='12' /></p>\n";
		$out .= "<p><input name='ndxz_hid' type='hidden' value='' /></p>\n";
		$out .= "<p><input name='ndxz_sec_pwd_sbmt' type='submit' value='submit' /></p>\n";
		$out .= "</form>\n";
		
		return $out;
	}
	
	
	/**
	* Password check
	*
	* @param string $function
	* @return string
	*/
	public function password()
	{
		$out = "<form name='ndxz_protect' id='ndxz-protect' method='post' action=''>\n";
		
		// this can be changed via a plugin (need to make the plugin)
		$out .= "<p>Password Protected Page (enter password):</p>\n";

		$out .= "<div id='ndxz_pwd'><input name='ndxz_pwd' type='text' maxlength='12' /></div>\n";
		$out .= "<div id='ndxz_pwd_sbmt'><button name='ndxz_pwd_sbmt' type='submit' />Submit</button></div>\n";
		$out .= "<input name='ndxz_hid' type='hidden' value='' />\n";
		$out .= "</form>\n";
		
		return $out;
	}
	
	/**
	* Returns index
	*
	* @param string $function
	* @return string
	*/
	public function index($function='')
	{
		// load 'theindex' class
		$NDX =& load_class('theindex', TRUE, 'lib');
		return $NDX->load_index();
	}
	
	public function javascript()
	{
		$out = $this->jquery();
		$out .= $this->prototype();
		$out .= $this->lib_js();
		$out .= $this->dyn_js();

		return $out;
	}
	
	/**
	* Returns exhibition
	*
	* @param void
	* @return string
	*/
	public function loadExhibit()
	{
		$OBJ =& get_instance();
		
		// check for password protection
		$this->password_protect();
		
		if (file_exists(DIRNAME . '/ndxzsite/' . $OBJ->vars->exhibit['obj_theme'] . '/format.' . $OBJ->vars->exhibit['format'] . '.php'))
		{
			include_once DIRNAME . '/ndxzsite/' . $OBJ->vars->exhibit['obj_theme'] . '/format.' . $OBJ->vars->exhibit['format'] . '.php';
				
			$OBJ =& get_instance();
			$OBJ->dyn_class('Exhibit');
		}
		elseif (file_exists(DIRNAME . '/ndxzsite/plugin/format.' . $OBJ->vars->exhibit['format'] . '.php'))
		{
			include_once DIRNAME . '/ndxzsite/plugin/format.' . $OBJ->vars->exhibit['format'] . '.php';

			$OBJ =& get_instance();
			$OBJ->dyn_class('Exhibit');
		}
		else
		{
			// thie default format
			if (file_exists(DIRNAME . '/ndxzsite/plugin/format.visual_index.php'))
			{
				include_once DIRNAME . '/ndxzsite/plugin/format.visual_index.php';

				$OBJ =& get_instance();
				$OBJ->dyn_class('Exhibit');
			}
		}
	}
	
	/**
	* Returns ccs file info
	*
	* @param void
	* @return string
	*/
	public function lib_css()
	{
		$out = '';
		
		if (!isset($this->exhibit['lib_css'])) return;
		
		if ($this->exhibit['lib_css'] != '')
		{
			if (is_array($this->exhibit['lib_css']))
			{
				foreach ($this->exhibit['lib_css'] as $css)
				{
					$out .= "<style type='text/css'> @import url(" . BASEURL . "/ndxzsite/css/$css" . $this->version . "); </style>\n";
				}
			}
			else
			{
				$out .= "<style type='text/css'> @import url(" . BASEURL . "/ndxzsite/css/" . $this->exhibit['lib_css'] . $this->version . "); </style>\n";
			}
		}
		
		return $out;
	}
	
	
	/**
	* Returns ccs file info
	*
	* @param void
	* @return string
	*/
	public function theme_css()
	{
		$OBJ =& get_instance();

		$out = '';
		
		if (!isset($this->exhibit['theme_css'])) return;
		
		$theme = $OBJ->vars->exhibit['obj_theme'];
		
		if ($this->exhibit['theme_css'] != '')
		{
			if (is_array($this->exhibit['theme_css']))
			{
				foreach ($this->exhibit['theme_css'] as $css)
				{
					$out .= "<style type='text/css'> @import url(" . BASEURL . "/ndxzsite/$theme/$css" . $this->version . "); </style>\n";
				}
			}
			else
			{
				$out .= "<style type='text/css'> @import url(" . BASEURL . "/ndxzsite/$theme/" . $this->exhibit['theme_css'] . $this->version . "); </style>\n";
			}
		}
		
		return $out;
	}
	
	
	public function css()
	{
		$out = $this->lib_css();
		$out .= $this->theme_css();
		$out .= $this->dyn_css();
		
		return $out;
	}
	
	
	public function append_index()
	{
		$OBJ =& get_instance();
		
		$s = '';

		if (isset($OBJ->page->exhibit['append_index']))
		{
			foreach ($OBJ->page->exhibit['append_index'] as $do)
			{
				$s .= $do;
			}
			
			return $s;
		}
	}
	
	
	public function append_page()
	{
		$OBJ =& get_instance();
		
		$s = '';

		if (isset($OBJ->page->exhibit['append_page']))
		{
			foreach ($OBJ->page->exhibit['append_page'] as $do)
			{
				$s .= $do;
			}
			
			return $s;
		}
	}
	
	
	public function front_test()
	{
		echo ' testing ';
	}
	
	public function sidebar()
	{
		$OBJ =& get_instance();
		
		$s = '';

		if (isset($OBJ->page->exhibit['sidebar']))
		{
			foreach ($OBJ->page->exhibit['sidebar'] as $do)
			{
				$s .= $do;
			}
			
			return $s;
		}
	}
	
	
	public function password_protect()
	{
		$OBJ =& get_instance();
		
		if ($OBJ->vars->exhibit['cms'] == true)
		{
			$this->protected = false;
			return;
		}

		// let's keep track of visits
		$this->last_visit();
		
		// what about section passwords?
		if ($OBJ->vars->exhibit['sec_pwd'] != '')
		{
			$this->cached = false;
	
			$page = 'ndxz_sec_' . $OBJ->vars->exhibit['secid'];
			
			if (isset($_POST['ndxz_sec_pwd_sbmt']) && ($_POST['ndxz_hid'] == ''))
			{
				// it matches the password
				if (md5($_POST['ndxz_sec_pwd']) == md5($OBJ->vars->exhibit['sec_pwd']))
				{
					// set the cookie for one day
					//setcookie($page, md5($_POST['ndxz_pwd']), time()+3600*24, $OBJ->vars->exhibit['url']);
					
					// is this bad?
					setcookie($page, md5($_POST['ndxz_sec_pwd']), time()+3600*24, '/');
					
					// do we need to do a redirect here then?
					header('location:' . BASEURL . ndxz_rewriter($OBJ->vars->exhibit['url']));
					exit;
				}
				else // it does not
				{
					$this->protected = true;

					$out = $this->sec_password();
					$out .= "<p>Incorrect.</p>\n";
					
					$OBJ->page->exhibit['exhibit'] = $out;
					return $OBJ->page->exhibit['exhibit'];
				}
			}
			elseif (isset($_COOKIE[$page]))
			{	
				// it doesn't match the password
				if ($_COOKIE[$page] != md5($OBJ->vars->exhibit['sec_pwd']))
				{
					$this->protected = true;
					$OBJ->page->exhibit['exhibit'] = $this->sec_password();
					return $OBJ->page->exhibit['exhibit'];
				}
			}
			else
			{
				$this->protected = true;
				$OBJ->page->exhibit['exhibit'] = $this->sec_password();
				return $OBJ->page->exhibit['exhibit'];
			}
		}
		else
		{
		// built-in password check
		// checks only the active page
		if ($OBJ->vars->exhibit['pwd'] != '')
		{
			$this->cached = false;
	
			$page = 'ndxz_page_' . $OBJ->vars->exhibit['id'];
			
			if (isset($_POST['ndxz_pwd_sbmt']) && ($_POST['ndxz_hid'] == ''))
			{
				// it matches the password
				if (md5($_POST['ndxz_pwd']) == md5($OBJ->vars->exhibit['pwd']))
				{
					// set the cookie for one day
					//setcookie($page, md5($_POST['ndxz_pwd']), time()+3600*24, $OBJ->vars->exhibit['url']);
					
					// is this bad?
					setcookie($page, md5($_POST['ndxz_pwd']), time()+3600*24, '/');
					
					// do we need to do a redirect here then?
					header('location:' . BASEURL . ndxz_rewriter($OBJ->vars->exhibit['url']));
					exit;
				}
				else // it does not
				{
					$out = $this->password();
					$out .= "<p>Incorrect.</p>\n";
					
					$OBJ->page->exhibit['exhibit'] = $out;
					return $OBJ->page->exhibit['exhibit'];
				}
			}
			elseif (isset($_COOKIE[$page]))
			{	
				// it doesn't match the password
				if ($_COOKIE[$page] != md5($OBJ->vars->exhibit['pwd']))
				{
					$this->protected = true;
					$OBJ->page->exhibit['exhibit'] = $this->password();
					return $OBJ->page->exhibit['exhibit'];
				}
			}
			else
			{
				$this->protected = true;
				$OBJ->page->exhibit['exhibit'] = $this->password();
				return $OBJ->page->exhibit['exhibit'];
			}
		}
		}
	}
	
	
	public function exhibit()
	{
		$OBJ =& get_instance();
		
		if ($OBJ->vars->exhibit['cms'] != true)
		{
			if ($this->protected == true)
			{
				return $OBJ->page->exhibit['exhibit'];
			}
		}
		
		// otherwise, we load our exhibit class
		return $OBJ->exhibit->createExhibit();
	}
	
	
	public function submedia()
	{
		$OBJ =& get_instance();
		
		phpinfo();
	}
	
	
	public function closing()
	{
		// this will be for hooks that come at the end
		// google analytics for instance
		
		$OBJ =& get_instance();

		// think we need to loop through an array of parts here
		if ($OBJ->hook->registered_hook('closing')) 
			return $OBJ->hook->do_action('closing');
	}
	
	public function statistics()
	{
		// this will be for hooks that come at the end
		// google analytics for instance
		$OBJ =& get_instance();

		// think we need to loop through an array of parts here
		if (isset($OBJ->abstracts->abstract['statistics'])) 
			return $OBJ->abstracts->abstract['statistics'];
	}
	
	public function meta()
	{
		$OBJ =& get_instance();
		
		if ($OBJ->hook->registered_hook('add_meta_tags')) 
			return $OBJ->hook->do_action('add_meta_tags');
	}
	
	public function favicon()
	{
		
	}
	
	/**
	* Returns js file info
	*
	* @param void
	* @return string
	*/
	public function lib_js()
	{
		$out = '';
		
		if (!empty($this->js_lib_table))
		{
			$this->js_lib_table = array_unique($this->js_lib_table);
			
			foreach ($this->js_lib_table as $js)
			{
				$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/$js" . $this->version . "'></script>\n";
			}
			
			//$out .= $this->front_jquery();

			return $out;
		}	
	}
	
	
	/**
	* Returns jquery file info
	*
	* @param void
	* @return string
	*/
	public function lib_jquery()
	{
		$out = '';
		
		if (!empty($this->js_jquery_table))
		{
			$this->js_jquery_table = array_unique($this->js_jquery_table);
			
			// auto add jquery.js
			$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/jquery.js" . $this->version . "'></script>\n";
			
			foreach ($this->js_jquery_table as $js)
			{
				$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/$js" . $this->version . "'></script>\n";
			}
			
			$out .= $this->front_jquery();

			return $out;
		}	
	}

	
	/**
	* Returns css - dynamically generated
	*
	* @param void
	* @return string
	*/
	public function dyn_css()
	{
		$out = '';
		
		if (!isset($this->exhibit['dyn_css'])) return;
		
		if ($this->exhibit['dyn_css'] != '')
		{
			if (is_array($this->exhibit['dyn_css']))
			{
				$out .= "<style type='text/css'>\n";
				
				foreach ($this->exhibit['dyn_css'] as $css)
				{
					$out .= "$css\n";
				}
				
				$out .= "</style>\n";
			}
			else
			{
				$out .= "<style type='text/css'>\n$css" . $this->version . "\n</style>\n";
			}
		}
		
		return $out;
	}
	
	/**
	* Returns js - dynamically generated
	*
	* @param void
	* @return string
	*/
	public function dyn_js()
	{
		$out = '';
		
		// check on this later...
		if (empty($this->exhibit['dyn_js'])) return;
		
		if ($this->exhibit['dyn_js'] != '')
		{
			if (is_array($this->exhibit['dyn_js']))
			{
				$tmp = array_unique($this->exhibit['dyn_js']);

				$out .= "<script type='text/javascript'>\n";
				
				foreach ($tmp as $js)
				{
					$out .= "$js\n";
				}
				
				$out .= "</script>\n";
			}
		}
		
		return $out;
	}
	
	
	/**
	* Returns js onload parts
	*
	* @param void
	* @return string
	*/
	public function onload_js()
	{
		$out = '';
		
		if (!isset($this->exhibit['onload'])) return;
		
		if ($this->exhibit['onload'] != '')
		{	
			if (is_array($this->exhibit['onload']))
			{
				$out .= " onload=\"";
				
				foreach ($this->exhibit['onload'] as $js)
				{
					$out .= "$js ";
				}
				
				$out .= "\"";
			}
			else
			{
				$out .= " onload=\"$js\"\n";
			}
		}
		
		return $out;
	}
	
	
	/**
	* Returns js - dynamically generated
	*
	* @param void
	* @return string
	*/
	public function jquery()
	{
		$out = '';
		
		if (empty($this->js_jquery_table)) return;
		
		//array_unique($this->js_jquery_table);

		if (is_array($this->js_jquery_table))
		{
			$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/jquery.js" . $this->version . "'></script>\n";
				
			foreach ($this->js_jquery_table as $js)
			{
				$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/$js" . $this->version . "'></script>\n";
			}
		}
		
		return $out;
	}
	
	
	/**
	* Returns js - dynamically generated
	*
	* @param void
	* @return string
	*/
	public function prototype()
	{
		$out = '';
		
		if (empty($this->js_prototype_table)) return;

		if (is_array($this->js_prototype_table))
		{
			$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/prototype.js" . $this->version . "'></script>\n";
				
			foreach ($this->js_prototype_table as $js)
			{
				$out .= "<script type='text/javascript' src='" . BASEURL . "/ndxzsite/js/$js" . $this->version . "'></script>\n";
			}
		}
		
		return $out;
	}
	
	
	public function onready()
	{
		$out = $this->jquery_onready();
		
		// not sure about this one yet
		//$out .= $this->front_prototype_onready();
		
		return $out;
	}
	
	
	/**
	* Returns js onready parts (for Jquery)
	*
	* @param void
	* @return string
	*/
	public function jquery_onready()
	{
		$out = '';
		
		if (empty($this->js_jquery_onready_table)) return;
		
		ksort($this->js_jquery_onready_table);
		$result = array_unique($this->js_jquery_onready_table);
		
		if (is_array($result))
		{
			$out .= "<script type='text/javascript'>\n";
			$out .= "$(document).ready(function()\n";
			$out .= "{\n";
				
			foreach ($result as $js)
			{
				$out .= "\t{$js}\n";
			}
				
			$out .= "});\n";
			$out .= "</script>\n";
		}
		
		return $out;
	}
	
	
	/**
	* Returns js onready parts (for Jquery)
	*
	* @param void
	* @return string
	*/
	public function prototype_onready()
	{
		$out = '';
		
		if (empty($this->js_prototype_onready_table)) return;

		if (is_array($this->js_prototype_onready_table))
		{
			$out .= "<script type='text/javascript'>\n";
			$out .= "$(document).ready(function()\n";
			$out .= "{\n";
				
			foreach ($this->js_prototype_onready_table as $js)
			{
				$out .= "\t{$js}\n";
			}
				
			$out .= "});\n";
			$out .= "</script>\n";
		}
		
		return $out;
	}
	
	
	public function add_jquery($file, $priority = 25) 
	{
		if (!isset($this->js_jquery_table[$priority]))
		{
			$this->js_jquery_table[$priority] = $file;
		}
		else
		{
			$this->add_jquery($file, $priority+1);
		}
		
		$this->js_jquery_table = array_unique($this->js_jquery_table);
	}
	
	
	public function add_prototype($file, $priority = 25) 
	{
		if (!isset($this->js_prototype_table[$priority]))
		{
			$this->js_prototype_table[$priority] = $file;
		}
	}
	

	public function add_jquery_onready($file, $priority = 25) 
	{
		if (!isset($this->js_jquery_onready_table[$priority]))
		{
			$this->js_jquery_onready_table[$priority] = $file;
		}
		else
		{
			$this->add_jquery_onready($file, $priority+1);
		}
		
		$this->js_jquery_onready_table = array_unique($this->js_jquery_onready_table);
	}
	
	
	public function add_prototype_onready($file, $priority = 25) 
	{
		if (!isset($this->js_prototype_onready_table[$priority]))
		{
			$this->js_prototype_onready_table[$priority] = $file;
		}
	}
	
	
	public function add_lib_js($file, $priority = 25) 
	{
		if (!isset($this->js_lib_table[$priority]))
		{
			$this->js_lib_table[$priority] = $file;
		}
	}


	public function remove_lib_js($file, $priority = 25) 
	{
		if ($this->js_lib_table[$priority] == $file)
		{
			unset($this->js_lib_table[$priority]);
		} 
	}
	
	
	public function delay_load_last($function='')
	{
		if ($function == '') return;
		
		$OBJ =& get_instance();
		
		return $this->$function();
	}
	
	
	/// for alternate parsing - PHP
	/**
	* Returns callback for function
	*
	* @param array $match
	* @return string
	*/
	public function load_plugin($match)
	{
		$OBJ =& get_instance();
	
		$this->func = $match;
		$arg_list = func_get_args();
		
		if ($arg_list[0][2] != '') 
		{
			$args = explode(',', $arg_list[0][2]);
			$args = array_map('trim', $args);
		} 
		else 
		{
			$args = NULL;
		}

		$args = $this->getArgs($args);
		
		////////////
		if (file_exists(DIRNAME . '/ndxzsite/plugin/plugin.' . $this->func . '.php'))
			include_once DIRNAME . '/ndxzsite/plugin/plugin.' . $this->func . '.php';

		if (class_exists($this->func)) 
		{
			$tmp = $this->func;
			$OBJ->dyn_class($this->func);
			
			// only if it exists
			if (method_exists($OBJ->$tmp, $args[0]) && $args[0] != '')
			{
				// it is possible to send variables to the method
				$args[1] = (isset($args[1])) ? $args[1] : null;
				$args[2] = (isset($args[2])) ? $args[2] : null;
				
				return call_user_func_array(array($OBJ->$tmp, $args[0]), array($args[1], $args[2]));
			}
			//else
			//{
			//	return call_user_func_array(array($OBJ->$tmp, '__construct'), array(null, null));
			//}
		}	
		else if (function_exists($this->func))
		{
			return call_user_func_array($this->func, $args);
		}
		else
		{
			return;
		}
	}
	
	/**
	* Returns parameters for function
	*
	* @param array $args
	* @return string
	*/
	public function getArgs($args)
	{
		if ($args == NULL) return;

		foreach ($args as $arg)
		{
			// var
			$arg = preg_replace('/^.*=/', '', $arg);
			// front
			$arg = preg_replace('/^(\'|")/', '', $arg);
			// back
			$var[] = preg_replace('/(\'|")$/', '', $arg);
		}

		return $var;
	}
}



et le fichier index.php
<?php define('SITE', 'Bonjour!');

// hide errors for the live site
//error_reporting(0);

// the basics
if (file_exists('ndxzsite/config/config.php')) require_once 'ndxzsite/config/config.php';

require_once 'ndxzsite/config/options.php';
require_once 'ndxzstudio/defaults.php';
require_once 'ndxzstudio/common.php';

$time_start = microtime_float();

// make sure we have our connection array
shutDownCheck();

// messy, but seems to work
$_REAL_SCRIPT_DIR = realpath(dirname($_SERVER['SCRIPT_FILENAME']));
$_REAL_BASE_DIR = realpath(dirname(__FILE__));
$_MY_PATH_PART = substr($_REAL_SCRIPT_DIR, strlen($_REAL_BASE_DIR));
$uri = $_MY_PATH_PART
	? substr(dirname($_SERVER['SCRIPT_NAME']), 0, -strlen($_MY_PATH_PART))
	: dirname($_SERVER['SCRIPT_NAME']);

$uri = entry_uri($uri, $_SERVER['REQUEST_URI']);
$uri = str_replace($self, '', $uri);

// check for cached
load_helpers(array('time'));
$CACHE =& load_class('cache', true, 'lib');
$CACHE->check_cached($uri); // let's check for post values to turn off caching

if ($CACHE->cached == true)
{
	$CACHE->show_cached();
}
else
{
	// load the core
	$OBJ =& load_class('core', true, 'lib');
	
	// need to load up hooks
	$OBJ->assign_core_front();
	
	// set defaults
	$OBJ->vars->default = $default;
	
	$OBJ->hook->load_hooks_front();
	
	// check for a preloading hook
	if ($OBJ->hook->registered_hook('site_protect')) $OBJ->hook->do_action('site_protect'); 
	
	// make a hook to change defaults?
	
	// media checks
	$uri = media_check($uri);
	
	// 'home' feature
	// if $uri == '/' switch query to search via 'home'
	if ($uri == '/')
	{
		$q['qry'] = "AND home = '1' ";
		$q['flag'] = true;
	}
	else
	{
		$q['qry'] = "AND url =  " . $OBJ->db->escape($uri) ;
		$q['flag'] = false;
	}

	// page query
	$OBJ->vars->exhibit = $OBJ->db->fetchRecord("SELECT *    
		FROM ".PX."objects, ".PX."objects_prefs, ".PX."sections  
		INNER JOIN ".PX."settings ON adm_id = '1' 
		WHERE status = '1'
		$q[qry]
		AND section_id = secid 
		AND object = obj_ref_type");
		
	// second try - enforces / as default
	if ((!$OBJ->vars->exhibit) && ($q['flag'] == true)) 
	{
		$OBJ->vars->exhibit = $OBJ->db->fetchRecord("SELECT * 
			FROM ".PX."objects, ".PX."objects_prefs, ".PX."sections  
			INNER JOIN ".PX."settings ON adm_id = '1' 
			WHERE status = '1'
			AND url = " . $OBJ->db->escape($uri) . " 
			AND section_id = secid 
			AND object = obj_ref_type");
	}

	if (!$OBJ->vars->exhibit) 
	{
		// try again with site root - the 'home' page
		$OBJ->vars->exhibit = $OBJ->db->fetchRecord("SELECT * 
			FROM ".PX."objects, ".PX."objects_prefs, ".PX."sections 
			INNER JOIN ".PX."settings ON adm_id = '1' 
			WHERE home = '1'
			AND status = '1' 
			AND section_id = secid 
			AND object = obj_ref_type");
			
		// we don't cache these
		$CACHE->defaults['caching'] = false;
		
		header("HTTP/1.1 404 Not Found");

		// we need a formal error page
		if (!$OBJ->vars->exhibit) 
		{ 
			// we don't search engines indexing this
			front_error('File Not Found', 404);
			exit;
		}
	}
	
	// we need to let the system know whether it's front or back end...
	$OBJ->vars->exhibit['cms'] = false;

	// create the abstracts for exhibits or even images
	$OBJ->abstracts->front_abstracts();

	// autoload 'plugins' folder
	include_once DIRNAME . '/ndxzsite/plugin/index.php';

	// additional variables
	// perhaps we should port these differently?
	$OBJ->baseurl = BASEURL;
	$OBJ->vars->exhibit['baseurl'] = BASEURL;
	$OBJ->vars->exhibit['basename'] = BASENAME;
	$OBJ->vars->exhibit['basefiles'] = BASEFILES;
	$OBJ->vars->exhibit['gimgs'] = GIMGS;
	$OBJ->vars->exhibit['ajax'] = false;
	$OBJ->vars->exhibit['cms'] = false;

	// we want to lose all of this
	$GLOBALS['rs'] = $OBJ->vars->exhibit;
	
	// setup front end helper class
	$OBJ->lib_class('page', true, 'lib');
	$OBJ->page->loadExhibit();
	$OBJ->page->init_page();
	
	if ($OBJ->hook->registered_hook('pre_load')) $OBJ->hook->do_action('pre_load');
	
	// is it special media?
	$OBJ->vars->exhibit['template'] = ($OBJ->template_override == true) ? 'media.php' : $OBJ->vars->exhibit['template'];
	
	$OBJ->parse_class($OBJ->vars->default['parse']);
	$OBJ->parse->vars = $OBJ->vars->exhibit;
	
	// this allows us some control over outputs...
	// like adding extra exhibits or variables via user input
	$OBJ->parse->pre_parse($OBJ->vars->exhibit['content']);

	$template = (file_exists(DIRNAME . '/ndxzsite/' . $OBJ->vars->exhibit['obj_theme'] . '/' . $OBJ->vars->exhibit['template'])) ? $OBJ->vars->exhibit['template'] : 'index.php';
	$filename = DIRNAME . '/ndxzsite/' . $OBJ->vars->exhibit['obj_theme'] . '/' . $template;
	$fp = @fopen($filename, 'r');
	$contents = fread($fp, filesize($filename));
	fclose($fp);

	$OBJ->parse->code = $contents;
	$output = $OBJ->parse->parsing();
	
	header('content-type: text/html; charset=utf-8');
	echo $output;
	
	// caching - if enabled and possible
	// we want media pages to cache as well
	$uri = ($OBJ->template_override == true) ? $OBJ->temp_uri : $uri;
	
	// no cache if a password page
	if (($OBJ->page->cached == true)) $CACHE->makeCache($uri, $output);
}
exit;
En faite il m'a suffit après quelques heures de recherche pour un débutant comme moi de modifier le fichier format.visual_index.php auquel il manquait la balise "?>" à la fin.

Bref tout ça pour ça et tout refonctionne.