Fatal error: Call to a member function page_header()

Petit nouveau ! | 6 Messages

23 janv. 2018, 09:11

J'essaye d'adapter à mes besoins un script trouvé ici http://forum.danielchalseche.fr.cr/viewtopic.php?t=53#

Voici le code PHP que j'utilise:

Code : Tout sélectionner

<?php /** * * @author Daniel Chalsèche (Dakin Quelia) http://www.danielchalseche.be/ * * @package Post * @version $Id: post.php 2009-08-12 02:31:25 Dakin Quelia $ * @copyright (c) 2009 Daniel Chalsèche * @license http://opensource.org/licenses/gpl-license.php GNU Public License * */ /** * @ignore */ define('IN_PHPBB', true); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); // Start session management $user->session_begin(); $auth->acl($user->data); $user->setup(''); //echo $user; $sql = 'SELECT post_text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url FROM ' . POSTS_TABLE; $result = $db->sql_query($sql); $post = $db->sql_fetchrow($result); $db->sql_freeresult($result); $post['bbcode_options'] = (($post['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($post['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($post['enable_magic_url']) ? OPTION_FLAG_LINKS : 0); $text = generate_text_for_display($post['rules_text'], $post['bbcode_uid'], $post['bbcode_bitfield'], $post['bbcode_options']); $template->assign_vars(array( 'POST_CONTENT' => $text, )); // Output page $site->page_header($user->lang['POST_PAGE']); $template->set_filenames(array( 'body' => 'mypost_body.html', )); $site->page_footer(); ?>
et le contenu mypost_body.html:

Code : Tout sélectionner

<div class="panel"> <div class="inner"><span class="corners-top"><span></span></span> <div id="main"> <h2><strong>{L_TITLE}</strong></h2> <p>{POST_CONTENT}</p> </div> <span class="corners-bottom"><span></span></span></div> </div>
Mais, quand j’exécute le php (en local sous WAMP64), j'obtiens cette erreur:

Image

:roll: :shock: Quelqu'un peut-il m'aider à la résoudre ?
Merci d'avance.

ViPHP
ViPHP | 4039 Messages

23 janv. 2018, 09:47

Salut!
J'imagine que c'est de cette ligne qu'on parle:
$site->page_header($user->lang['POST_PAGE']);
Manifestement, $site ne contient pas la méthode page_header().

J'en connais pas plus sur phpbb, ni ou $site est instancié, mais avec quelques infos de débogage, on pourrait s'en tirer, comme faire dire à PHP ce que contient exactement l'objet $site:

à insérer quelque part juste avant la ligne 45, et voir ce que ça donne:
printf("Classe de l'objet: %s <br>\n", get_class($site));
var_dump($site);
exit();
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Petit nouveau ! | 6 Messages

23 janv. 2018, 10:01

Merci pour ton aide, Berzemus :-)


J'ai inséré tes 3 lignes comme ça:

Code : Tout sélectionner

$template->assign_vars(array( 'POST_CONTENT' => $text, )); // printf("Classe de l'objet: %s <br>\n", get_class($site)); var_dump($site); exit(); // // Output page $site->page_header($user->lang['POST_PAGE']); $template->set_filenames(array( 'body' => 'mypost_body.html', ));
Voici le résultat obtenu :?
[phpBB Debug] PHP Warning: in file [ROOT]/modif_postimage.php on line 45: get_class() called without object from outside a class
Classe de l'objet:

D:\wamp64\www\phpBB3_32patched_debug\modif_postimage.php:46:null

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8304 Messages

24 janv. 2018, 11:13

Bonjour,

Désolé mon message ne va peut être pas être très constructif mais je pense que tu ne devrais pas du tout utiliser le code que tu as récupéré.
Il a été écrit en 2009, nous sommes en 2018, pour une très vieille version de PHP et pour une très vieille version de phpBB.

Alors, certes, sur un malentendu ça pourrait peut être marcher, mais honnêtement tu risque de passer + de temps à tenter de faire du débugage que de refaire un développement propre.
Ou si tu n'as pas les compétences pour faire un developpement "from scratch", essaye de trouver des modules maintenus à jour qui pourrait correspondre à ton besoin.

Par exemple, si tu veux juste récupérer la liste des derniers sujets de ton forum sur une page externe, il existe un module qui va générer des flux RSS :
https://www.phpbb.com/customise/db/exte ... extension/
Et ensuite c'est très facile de lire et afficher sur une page tiers le contenu d'une page RSS
Quand tout le reste a échoué, lisez le mode d'emploi...