CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

fatal error phpbb

isukthar
isukthar
Niveau 10
16 juillet 2007 à 19:32:28

Bonjour,
depuis quelques minutes ou heures (je sais pas trop) j´ai un message d´erreur qui s´affiche quand j´essaye d´accéder à mon forum.
voici l´adresse:
http://www.frgame.ironie.org/phpbb/index.php

J´ai jamais vu ce type d´erreur auparavant et je n´ai rien touché au forum. J´espère que j´ai pas été hacké.

Pouvez vous m´aider.

deepblue
deepblue
Niveau 16
16 juillet 2007 à 19:37:19

tu as fais joujou avec les templates ? as tu ajouté un theme ou fais quelque chose de special ?

isukthar
isukthar
Niveau 10
16 juillet 2007 à 19:41:59

Ca fait des semaines que je n´ai absolument rien toucé aux templates. Et quand j´ai installé le forum, la seule chose que j´ai changé c´est le logo en haut à gauche et l´ajout d´une bannière de pub (et il n´y avait aucun problème).

deepblue
deepblue
Niveau 16
16 juillet 2007 à 19:47:16

car c´est l´erreur typique de moteur de tpl de phpbb lorsque une syntaxe du tpl est mal faite, exemple :

<!-- BEGIN toto -->
<!-- BEGIN toto -->

au lieu de :

<!-- BEGIN toto -->
<!-- END toto -->

isukthar
isukthar
Niveau 10
16 juillet 2007 à 19:51:31

Ce qui me surprend c´est que ça arrive tout seul, sans que j´ai touché au forum.

isukthar
isukthar
Niveau 10
16 juillet 2007 à 19:55:43

Je sais pas trop quoi faire. Autant j´arrive à m´en sortir avec mes petits scripts, mais là avec un truc comme phpbb je suis complètement perdu.

[_SoRa_]
[_SoRa_]
Niveau 10
16 juillet 2007 à 20:09:59

Si tu ne nous montre pas les lignes ou se situent le problème, on ne pourra rien faire =/

isukthar
isukthar
Niveau 10
16 juillet 2007 à 20:28:36

Voici le code:

for ($i = 0; $i < $blockcount; $i++)
{
$str .= ´[\´´ . $blocks[$i] . ´.\´]´;
eval(´$lastiteration = sizeof(´ . $str . ´) - 1;´);
$str .= ´[´ . $lastiteration . ´]´;
}

l´erreur est à la ligne du eval selon la page d´erreur.

deepblue
deepblue
Niveau 16
16 juillet 2007 à 20:40:08

C´est cette page le probleme (j´utilse ce moteur de template). J´ai donné un exemple qui genere cette erreur

deepblue
deepblue
Niveau 16
16 juillet 2007 à 21:30:17

c´est PAS cette page*

isukthar
isukthar
Niveau 10
16 juillet 2007 à 21:30:30

<?php

/*************************************************

    • ***********************

* template.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: template.php,v 1.10.2.5 2005/05/06 20:50:11 acydburn Exp $
*
*

    • ***********************************************
    • **********************/

/*************************************************

    • ***********************

*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*

    • ***********************************************
    • **********************/

/**
* Template class. By Nathan Codding of the phpBB group.
* The interface was originally inspired by PHPLib templates,
* and the template file formats are quite similar.
*
*/

class Template {
var $classname = "Template";

// variable that holds all the data we´ll be substituting into
// the compiled templates.
// ...
// This will end up being a multi-dimensional array like this:
//
$this->_tpldata[block.][iteration#][child.][iterat
ion#][child2.][iteration#][variablename] == value
// if it´s a root-level variable, it´ll be like this:
// $this->_tpldata[.][0][varname] == value
var $_tpldata = array();

// Hash of filenames for each template handle.
var $files = array();

// Root template directory.
var $root = "";

// this will hash handle names to the compiled code for that handle.
var $compiled_code = array();

// This will hold the uncompiled code for that handle.
var $uncompiled_code = array();

/**
* Constructor. Simply sets the root dir.
*
*/
function Template($root = ".")
{
$this->set_rootdir($root);
}

/**
* Destroys this template object. Should be called when you´re done with it, in order
* to clear out the template data so you can load/parse a new template set.
*/
function destroy()
{
$this->_tpldata = array();
}

/**
* Sets the template root directory for this Template object.
*/
function set_rootdir($dir)
{
if (!is_dir($dir))
{
return false;
}

$this->root = $dir;
return true;
}

/**
* Sets the template filenames for handles. $filename_array
* should be a hash of handle => filename pairs.
*/
function set_filenames($filename_array)
{
if (!is_array($filename_array))
{
return false;
}

reset($filename_array);
while(list($handle, $filename) = each($filename_array))
{
$this->files[$handle] = $this->make_filename($filename);
}

return true;
}

/**
* Load the file for the handle, compile the file,
* and run the compiled code. This will print out
* the results of executing the template.
*/
function pparse($handle)
{
if (!$this->loadfile($handle))
{
die("Template->pparse(): Couldn´t load template file for handle $handle");
}

// actually compile the template now.
if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
{
// Actually compile the code now.
$this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
}

// Run the compiled code.
eval($this->compiled_code[$handle]);
return true;
}

/**
* Inserts the uncompiled code for $handle as the
* value of $varname in the root-level. This can be used
* to effectively include a template in the middle of another
* template.
* Note that all desired assignments to the variables in $handle should be done
* BEFORE calling this function.
*/
function assign_var_from_handle($varname, $handle)
{
if (!$this->loadfile($handle))
{
die("Template->assign_var_from_handle(): Couldn´t load template file for handle $handle");
}

// Compile it, with the "no echo statements" option on.
$_str = "";
$code = $this->compile($this->uncompiled_code[$handle], true, ´_str´);

// evaluate the variable assignment.
eval($code);
// assign the value of the generated variable to the given varname.
$this->assign_var($varname, $_str);

return true;
}

/**
* Block-level variable assignment. Adds a new block iteration with the given
* variable assignments. Note that this should only be called once per block
* iteration.
*/
function assign_block_vars($blockname, $vararray)
{
if (strstr($blockname, ´.´))
{
// Nested block.
$blocks = explode(´.´, $blockname);
$blockcount = sizeof($blocks) - 1;
$str = ´$this->_tpldata´;
for ($i = 0; $i < $blockcount; $i++)
{
$str .= ´[\´´ . $blocks[$i] . ´.\´]´;
eval(´$lastiteration = sizeof(´ . $str . ´) - 1;´);
$str .= ´[´ . $lastiteration . ´]´;
}
// Now we add the block that we´re actually assigning to.
// We´re adding a new iteration to this block with the given
// variable assignments.
$str .= ´[\´´ . $blocks[$blockcount] . ´.\´][] = $vararray;´;

// Now we evaluate this assignment we´ve built up.
eval($str);
}
else
{
// Top-level block.
// Add a new iteration to this block with the variable assignments
// we were given.
$this->_tpldata[$blockname . ´.´][] = $vararray;
}

return true;
}

/**
* Root-level variable assignment. Adds to current assignments, overriding
* any existing variable assignment with the same name.
*/
function assign_vars($vararray)
{
reset ($vararray);
while (list($key, $val) = each($vararray))
{
$this->_tpldata[´.´][0][$key] = $val;
}

return true;
}

/**
* Root-level variable assignment. Adds to current assignments, overriding
* any existing variable assignment with the same name.
*/
function assign_var($varname, $varval)
{
$this->_tpldata[´.´][0][$varname] = $varval;

return true;
}

/**
* Generates a full path+filename for the given filename, which can either
* be an absolute name, or a name relative to the rootdir for this Template
* object.
*/
function make_filename($filename)
{
// Check if it´s an absolute or relative path.
if (substr($filename, 0, 1) != ´/´)
{
$filename = ($rp_filename = phpbb_realpath($this->root . ´/´ . $filename)) ? $rp_filename : $filename;
}

if (!file_exists($filename))
{
die("Template->make_filename(): Error - file $filename does not exist");
}

return $filename;
}

/**
* If not already done, load the file for the given handle and populate
* the uncompiled_code[] hash with its code. Do not compile.
*/
function loadfile($handle)
{
// If the file for this handle is already loaded and compiled, do nothing.
if (isset($this->uncompiled_code[$handle]) && !e mpty($this->uncompiled_code[$handle]))
{
return true;
}

// If we don´t have a file assigned to this handle, die.
if (!isset($this->files[$handle]))
{
die("Template->loadfile(): No file specified for handle $handle");
}

$filename = $this->files[$handle];

$str = implode("", @file($filename));
if (empty($str))
{
die("Template->loadfile(): File $filename for handle $handle is empty");
}

$this->uncompiled_code[$handle] = $str;

return true;
}

/**
* Compiles the given string of code, and returns
* the result in a string.
* If "do_not_echo" is true, the returned code will not be directly
* executable, but can be used as part of a variable assignment
* for use in assign_code_from_handle().
*/
function compile($code, $do_not_echo = false, $retvar = ´´)
{
// replace \ with \\ and then ´ with \´.
$code = str_replace(´\\´, ´\\\\´, $code);
$code = str_replace(´\´´, ´\\\´´, $code);

// change template varrefs into PHP varrefs

// This one will handle varrefs WITH namespaces
$varrefs = array();

preg_match_all(´#\{(([a-z0-9\-_]+?\.)+?)([a-z0-9
\-_]+?)\}#is´, $code, $varrefs);
$varcount = sizeof($varrefs[1]);
for ($i = 0; $i < $varcount; $i++)
{
$namespace = $varrefs[1][$i];
$varname = $varrefs[3][$i];
$new = $this->generate_block_varref($namespace, $varname);

$code = str_replace($varrefs[0][$i], $new, $code);
}

// This will handle the remaining root-level varrefs
$code = preg_replace(´#\{([a-z0-9\-_]*?)\}#is´, ´\´ . ( ( isset($this->_tpldata[\´.\´][0][\´\1\´]) ) ? $this->_tpldata[\´.\´][0][\´\1\´] : \´\´ ) . \´´, $code);

// Break it up into lines.
$code_lines = explode("\n", $code);

$block_nesting_level = 0;
$block_names = array();
$block_names[0] = ".";

// Second: prepend echo ´, append ´ . "\n"; to each line.
$line_count = sizeof($code_lines);
for ($i = 0; $i < $line_count; $i++)
{
$code_lines[$i] = chop($code_lines[$i]);
if (preg_match(´#<!-- BEGIN (.*?) -->#´, $code_lines[$i], $m))
{
$n[0] = $m[0];
$n[1] = $m[1];

// Added: dougk_ff7-Keeps templates from bombing if begin is on the same line as end.. I think. :)
if ( preg_match(´#<!-- END (.*?) -->#´, $code_lines[$i], $n) )
{
$block_nesting_level++;
$block_names[$block_nesting_level] = $m[1];
if ($block_nesting_level < 2)
{
// Block is not nested.
$code_lines[$i] = ´$_´ . $n[1] . ´_count = ( isset($this->_tpldata[\´´ . $n[1] . ´.\´]) ) ? sizeof($this->_tpldata[\´´ . $n[1] . ´.\´]) : 0;´;
$code_lines[$i] .= "\n" . ´for ($_´ . $n[1] . ´_i = 0; $_´ . $n[1] . ´_i < $_´ . $n[1] . ´_count; $_´ . $n[1] . ´_i++)´;
$code_lines[$i] .= "\n" . ´{´;
}
else
{
// This block is nested.

// Generate a namespace string for this block.
$namespace = implode(´.´, $block_names);
// strip leading period from root level..
$namespace = substr($namespace, 2);
// Get a reference to the data array for this block that depends on the
// current indices of all parent blocks.
$varref = $this->generate_block_data_ref($namespace, false);
// Create the for loop code to iterate over this block.
$code_lines[$i] = ´$_´ . $n[1] . ´_count = ( isset(´ . $varref . ´) ) ? sizeof(´ . $varref . ´) : 0;´;
$code_lines[$i] .= "\n" . ´for ($_´ . $n[1] . ´_i = 0; $_´ . $n[1] . ´_i < $_´ . $n[1] . ´_count; $_´ . $n[1] . ´_i++)´;
$code_lines[$i] .= "\n" . ´{´;
}

// We have the end of a block.
unset($block_names[$block_nesting_level]);
$block_nesting_level--;
$code_lines[$i] .= ´} // END ´ . $n[1];
$m[0] = $n[0];
$m[1] = $n[1];
}
else
{
// We have the start of a block.
$block_nesting_level++;
$block_names[$block_nesting_level] = $m[1];
if ($block_nesting_level < 2)
{
// Block is not nested.
$code_lines[$i] = ´$_´ . $m[1] . ´_count = ( isset($this->_tpldata[\´´ . $m[1] . ´.\´]) ) ? sizeof($this->_tpldata[\´´ . $m[1] . ´.\´]) : 0;´;
$code_lines[$i] .= "\n" . ´for ($_´ . $m[1] . ´_i = 0; $_´ . $m[1] . ´_i < $_´ . $m[1] . ´_count; $_´ . $m[1] . ´_i++)´;
$code_lines[$i] .= "\n" . ´{´;
}
else
{
// This block is nested.

// Generate a namespace string for this block.
$namespace = implode(´.´, $block_names);
// strip leading period from root level..
$namespace = substr($namespace, 2);
// Get a reference to the data array for this block that depends on the
// current indices of all parent blocks.
$varref = $this->generate_block_data_ref($namespace, false);
// Create the for loop code to iterate over this block.
$code_lines[$i] = ´$_´ . $m[1] . ´_count = ( isset(´ . $varref . ´) ) ? sizeof(´ . $varref . ´) : 0;´;
$code_lines[$i] .= "\n" . ´for ($_´ . $m[1] . ´_i = 0; $_´ . $m[1] . ´_i < $_´ . $m[1] . ´_count; $_´ . $m[1] . ´_i++)´;
$code_lines[$i] .= "\n" . ´{´;
}
}
}
else if (preg_match(´#<!-- END (.*?) -->#´, $code_lines[$i], $m))
{
// We have the end of a block.
unset($block_names[$block_nesting_level]);
$block_nesting_level--;
$code_lines[$i] = ´} // END ´ . $m[1];
}
else
{
// We have an ordinary line of code.
if (!$do_not_echo)
{
$code_lines[$i] = ´echo \´´ . $code_lines[$i] . ´\´ . "\\n";´;
}
else
{
$code_lines[$i] = ´$´ . $retvar . ´.= \´´ . $code_lines[$i] . ´\´ . "\\n";´;
}
}
}

// Bring it back into a single string of lines of code.
$code = implode("\n", $code_lines);
return $code ;

}

/**
* Generates a reference to the given variable inside the given (possibly nested)
* block namespace. This is a string of the form:
* ´ .
$this->_tpldata[´parent´][$_parent_i][´$child1´][$
_child1_i][´$child2´][$_child2_i]...[´varname´] . ´
* It´s ready to be inserted into an "echo" line in one of the templates.
* NOTE: expects a trailing "." on the namespace.
*/
function generate_block_varref($namespace, $varname)
{
// Strip the trailing period.
$namespace = substr($namespace, 0, strlen($namespace) - 1);

// Get a reference to the data block for this namespace.
$varref = $this->generate_block_data_ref($namespace, true);
// Prepend the necessary code to stick this in an echo line.

// Append the variable reference.
$varref .= ´[\´´ . $varname . ´\´]´;

$varref = ´\´ . ( ( isset(´ . $varref . ´) ) ? ´ . $varref . ´ : \´\´ ) . \´´;

return $varref;

}

/**
* Generates a reference to the array of data values for the given
* (possibly nested) block namespace. This is a string of the form:
*
$this->_tpldata[´parent´][$_parent_i][´$child1´][$
_child1_i][´$child2´][$_child2_i]...[´$childN´]
*
* If $include_last_iterator is true, then [$_childN_i] will be appended to the form shown above.
* NOTE: does not expect a trailing "." on the blockname.
*/
function generate_block_data_ref($blockname, $include_last_iterator)
{
// Get an array of the blocks involved.
$blocks = explode(".", $blockname);
$blockcount = sizeof($blocks) - 1;
$varref = ´$this->_tpldata´;
// Build up the string with everything but the last child.
for ($i = 0; $i < $blockcount; $i++)
{
$varref .= ´[\´´ . $blocks[$i] . ´.\´][$_´ . $blocks[$i] . ´_i]´;
}
// Add the block reference for the last child.
$varref .= ´[\´´ . $blocks[$blockcount] . ´.\´]´;
// Add the iterator for the last child if requried.
if ($include_last_iterator)
{
$varref .= ´[$_´ . $blocks[$blockcount] . ´_i]´;
}

return $varref;
}

}

?>

isukthar
isukthar
Niveau 10
16 juillet 2007 à 21:31:55

Mince la mise en forme est bousillée. Bon je vois pas ce que je peux faire. Je vois pas ou est l´erreur.

deepblue
deepblue
Niveau 16
16 juillet 2007 à 21:40:45

L´erreur NE SE TROUVE PAS sur cette page !
Comme je l´ai explique dans mon premier post, c´est dans le TEMPLATE que ça se passe !

isukthar
isukthar
Niveau 10
16 juillet 2007 à 21:59:28

Mais c´est bien la page template.php Dans l´erreur, on me dit que eval est interdit donc ça doit avoir un lien non?

deepblue
deepblue
Niveau 16
16 juillet 2007 à 22:12:00

NAN :hum:

Une erreur generé dans un templates fausse le parasage. Le parasage utilise la fonction eval() dans laquelle on passe en parametre une chaine de caractères. Si c´est chaine de caractères est faussée, ça genere cette erreur. La chaine de caractère faussée et passée en parametre à eval est du a une mauvaise utilisation des templates. Je connais ça car je l´utilise pour series-sources

darth-bane
darth-bane
Niveau 10
16 juillet 2007 à 22:20:59
  • parsage
deepblue
deepblue
Niveau 16
16 juillet 2007 à 22:23:46

2 fois en plus :s

isukthar
isukthar
Niveau 10
16 juillet 2007 à 22:37:32

Tu as une idée du fichier sachant que j´utilise le template de base Subsilver? Ya des dizaines de fichiers, je trouverais jamais l´erreur.

isukthar
isukthar
Niveau 10
16 juillet 2007 à 23:04:23

Je pense finalement que le problème viens de mon hébergeur, il a la même erreur sur ses forums.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment