Page : 1 |
ricici123 |
Posté le 01/01/2008 16:30
- #
|
Membre
4 messages
|
Bonjour,
Les gagatemplates me produisent l'erreur suivante : Non-static method gagatemplate:: parse_include_callback() cannot be called statically, assuming $this from compatible context gagatemplate
A la ligne n°204.
Elle se produit avec le script suivant :
$tpl-> assign(array('title' => 'all-lifes',
'contenu' => 'test'));;
$tpl-> parse('index.tpl');
(Le moteur de script a été instancié plus haut dans le script)
Et le code de template suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>{title}</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="libs_ajax/function_base.js"></script>
</head>
<body>
{contenu}
</body>
</html>
Merci de votre lecture et de votre aide potentiel
[Edit] L'erreur se produite avec la version 4 Edité par ricici123 le 02/01/2008 12:40
|
gaga26 |
Posté le 01/01/2008 17:06
- #
|


741 messages
18 ans |
Salut,
Pourrait-on avoir le code complet de ta page, parce là comme ça je vois pas vraiment...
|
ricici123 |
Posté le 01/01/2008 17:43
- #
|
Membre
4 messages
|
D'accord les voilà, j'ai mis les fichiers tel qu'ils vont être utilisé.
Le fichiers index.php
<?php
session_start();
if(isset($_GET['page']))
{
if($_GET['page'] != 'forum' AND $_GET['page'] != 'mp' AND $_GET['page'] != 'jeu' )
{
echo 'Tentative de hack détécté, votre adresse ip a été enregistrer';
//mettre un méthode pour enregistrer l'ip
exit();
}
}
//Fichiers du moteur de template
include_once('libs/gaga.class.php');
$tpl = new gagatemplate ();
//Fichiers de configuraison :
include_once('conf/configuration.php');
//Fichers des différentes fonctions (utilise uniquement pour le forum et les mp)
if($_GET['page'] == 'forum' OR $_GET['page'] == 'mp')
{
include_once('function/function_mysql.php');
include_once('function/erreur.php');
include_once('function/utilitaires.php');
include_once('function/hack.php');
include_once('function/mp.php');
}
//Fichiers du noyau (utilise uniqement pour le jeu en lui même)
if($_GET['page'] == 'jeu')
{
include_once('noyau/noyau.php');
}
if($_GET['page'] == 'forum' OR $_GET['page'] == 'mp')
{
connection_mysql ($hote, $login, $mot_de_pase, $base_de_donne);
set_error_handler('erreur');
include_once($_GET['page']. '.php');
mysql_close();
$tpl-> clean_compile_dir();
$tpl-> assign(array('title' => 'all-lifes',
'contenu' => $contenu));;
$tpl-> parse('index.tpl');
}
else
{
echo 'Voulez-vous aller au <a href="index.php?page=forum">forum</a> ou aux <a href="index.php?page=mp">mp</a> ?';
}
?>
Qui parse le fichiers index.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>{title}</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="libs_ajax/function_base.js"></script>
</head>
<body>
{contenu}
</body>
</html>
Je fait les test avec le fichiers mp.php et l'action : lire_index
Donc on retrouve le fichiers mp.php
<?php
function parseur_mp ($action, $message, $racine_site)
{
if($action == 'lire_index')
{
$occurence = count($message);
$tpl1 = new gagatemplate ();
$occurence--;
$a = 0;
while($a< $occurence)
{
$tpl1-> assign_array('message', array('titre' => $message[$a]['titre'],
'lu' => $message[$a]['lu'],
'auteur' => $message[$a]['auteur_mp'],
'date' => $message[$a]['date'],
'auteur_dernier_message' => $message[$a]['auteur_dernier_message'],
'date_dernier_message' => $message[$a]['date_dernier_message']) );
$b = 0;
while($b< $message[$a]['nombre_participant'])
{
$tpl1-> assign_array('message.participant', array('lu_participant' => $message[$a]['participant']['lu'][$b],
'participant' => $message[$a]['participant']['nom'][$b]) );
$b++;
}
$a++;
}
$page = explode(',', $message['numero_page']);
$nombre_page = count($page);
$c = 0;
while($c< $nombre_page)
{
$tpl1-> assign_array('numero_page', array('racine_site' => $racine_site,
'numero_page' => $page[$c] ));
$c++;
}
ob_start();
$tpl1-> parse('mp/lire_index.tpl');
$contenu = ob_get_contents();
ob_end_clean();
}
return $contenu;
}
?>
Qui parse le fichiers
<table>
<thead>
<tr>
<th>Titre du message</th>
<th>Auteur</th>
<th>Date</th>
<th>Participant</th>
<th>Dernier message</th>
</tr>
</thead>
<foreach var="$message" as="message">
<tr>
<td>{message[titre]}</td>
<td><if cond="$message[lu] == 0"><span class='rouge'>{message[auteur]}</span><else>{message[auteur]}</if></td>
<td>{message[date]}</td>
<td><foreach var="$message[participant]" as="participant">
<li><if cond="$participant[lu_participant] == 0"><span class='rouge'>{participant[participant]}</span><else>{participant[participant]}</if></li>
</foreach>
</td>
<td><span class='centrer'>{message[auteur_dernier_message]}<br/>{message[date_dernier_message]}</span></td>
</tr>
</foreach>
</table>
<p>
<foreach var="$numero_page" as="page">
<a href='{page[racine_site]}index.php?page=mp&action=lire_index&mode=classique&numero_page={page[numero_page]}'>{page[numero_page]}</a>
</foreach>
Le lien entre index.php et mp.php est fait pas un autre fichiers index.php
include_once('scripts/mp/'. $_GET['action']. '.php');
if($_GET['mode'] == 'ajax')
{
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo $reponse;
echo '</xml>';
}
elseif($_GET['mode'] == 'classique')
{
$contenu = parseur_mp ($_GET['action'], $message, $racine_site);
}
La variable $message étant généré par un fichiers lire_index.php mais il n'entre en rien dans la gestion des templates.
|
gaga26 |
Posté le 01/01/2008 18:29
- #
|


741 messages
18 ans |
Je ne vois pas pourquoi tu redéclare la class dans ta fonction parseur_mp, il serait préférable de réutiliser la varible $tpl.
|
ricici123 |
Posté le 01/01/2008 18:51
- #
|
Membre
4 messages
|
Sa ne résout malheureusement pas le problème.
[Edit] en commentant la ligne n°204, le bug disparaît et la page s'affiche correctement, mais je trouve cette méthode un peu kurde je trouve. Edité par ricici123 le 01/01/2008 19:01
|
gaga26 |
Posté le 01/01/2008 19:05
- #
|


741 messages
18 ans |
essai de mettre le mot static devant.
|
ricici123 |
Posté le 01/01/2008 20:20
- #
|
Membre
4 messages
|
Il me dit maintenant :
Fatal error: Using $this when not in object context in /home/romain/Serveur/All-lifes/Forum-alpha-0.0/libs/gaga.class.php on line 204
Mais en utilisant le mot static à la ligne 209 comme ceci :
private static function parse_include_callback ($m){
Sa marche !!!
|
maxima |
Posté le 11/02/2008 21:56
- #
|

Membre
5 messages
16 ans |
<?php
if($_GET['page'] != 'forum' AND $_GET['page'] != 'mp' AND $_GET['page'] != 'jeu' )
{
echo 'Tentative de hack détécté, votre adresse ip a été enregistrer';
//mettre un méthode pour enregistrer l'ip
exit();
}
}
?>
le gars qui déteste les hackeurs je deconne Edité par maxima le 11/02/2008 21:57
|
magik-orion |
Posté le 12/02/2008 18:58
- #
|

Membre
49 messages
18 ans |
Bonjour à tous !
Je viens d'installer la version 4.0 et j'ai eu le même problème.
J'ai donc ajouter le mot static et tout a bien fonctionné.
Merci
|
Page : 1 |