Statistiken außerhalb von PhpBB (aber auf gleicher Domain)

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Dr-Psycho-Fans
Mitglied
Beiträge: 12
Registriert: 01.12.2008 01:28

Statistiken außerhalb von PhpBB (aber auf gleicher Domain)

Beitrag von Dr-Psycho-Fans »

Guten Abend, ich such mich schon blöde. Es ist prinzipiell gesehen ganz einfach: Ich möchte die Statistiken, genauer genommen nur die Beitragszahlen, woanders includen. Ein passendes Script oder ähnliches hab ich auf anderen Seiten auch nicht finden können.

Die Ausgabe soll die reine Zahl sein, von daher hab ich die index.php soweit gekürzt, und eine neues Template angelegt, dass nur noch die Zahl ausgegeben wird. So weit, so gut... das funktioniert auch, aber nur wenn ich die Datei direkt aufrufe (Domain.de/forum/stats.php).

Die stats.php

Code: Alles auswählen

<?php
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('viewforum');

display_forums('', $config['load_moderators']);

// Set some stats, get posts count from forums data if we... hum... retrieve all forums data
$total_posts	= $config['num_posts'];
$total_topics	= $config['num_topics'];
$total_users	= $config['num_users'];

$l_total_user_s = ($total_users == 0) ? 'TOTAL_USERS_ZERO' : 'TOTAL_USERS_OTHER';
$l_total_post_s = ($total_posts == 0) ? 'TOTAL_POSTS_ZERO' : 'TOTAL_POSTS_OTHER';
$l_total_topic_s = ($total_topics == 0) ? 'TOTAL_TOPICS_ZERO' : 'TOTAL_TOPICS_OTHER';

$result = $db->sql_query($sql);

$db->sql_freeresult($result);
// Assign index specific vars
$template->assign_vars(array(
	'TOTAL_POSTS'	=> sprintf($user->lang[$l_total_post_s], $total_posts),
)
);

// Output page
page_header($user->lang['INDEX']);
$template->set_filenames(array(
	'body' => 'zaehler.html')
);

page_footer();

?>
Hier das Template "zaehler.html":
{TOTAL_POSTS}
Sobald ich sie aber in meine startseite (in mein Grundverzeichnis) includen will, bleibt der Wert leer. Die Pfadangaben stimmen eigentlich

Code: Alles auswählen

$zaehler = include '/srv/www/vhosts/Domain.de/forum/stats.php';
und dann als Ausgabe in meiner Startseite:

Code: Alles auswählen

Das Forum hat $zaehler Beiträge
Wieso geht der direkte Aufruf, die Include-Angaben sind auch korrekt, aber kein Wert wird ausgegeben?

Würd' mich über Lösungsvorschläge freuen! Danke...
Sebastian
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Die Aussage dass die include Anweisungen korrekt sind sehe ich allerdings anders.

Die Datei produziert an keiner Stelle einen Rückgabewert, sondern lediglich Ausgaben die auf den Bildschirm geschrieben werden. Wenn du bei dieser Technik bleiben willst, dann verwende output buffering ([php:ob_start] und co.).

Ich würde da allerdings eher eine Zahl erzeugen, also einfach die Zahl direkt aus der Config Tabelle auslesen und dann per Return zurück geben. Also den ganzen Template Kram weglassen und nach dem hier:

Code: Alles auswählen

<?php
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); 
sofort die Variable zurückliefern (falls deine eigene Datei keine phpBB Funktionen nutzt, ansonsten kannst du das ganze direkt per $config['num_topics'] erledigen):

Code: Alles auswählen

return $config['num_topics'];
Entsprechend dürftest du alles andere weglassen können.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Dr-Psycho-Fans
Mitglied
Beiträge: 12
Registriert: 01.12.2008 01:28

Beitrag von Dr-Psycho-Fans »

Also Dein Code ändert nichts. Denn die stats.php wird sowohl bei meinem als auch in Deiner Weise (mit echo statt return) mit der richtigen Zahl ausgegeben.

Was bei beiden Varianten allerdings immer noch nicht klappt, ist diese Zahl woanders zu includen. Das mit dem "output buffering" verstehe ich nicht, sofern es damit überhaupt was zu tun hat.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Dann zeig mir mal was du da gemacht hast?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Dr-Psycho-Fans
Mitglied
Beiträge: 12
Registriert: 01.12.2008 01:28

Beitrag von Dr-Psycho-Fans »

Steht eigentlich schon oben alles, aber hier einmal komplett mit Deiner Bearbeitung:

in der stats.php (die sich im Ordner /forum befindet):

Code: Alles auswählen

<?php
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);
echo $config['num_posts'];
?>
...diese gibt dann den Wert z.B. "40" für die Anzahl der Beiträge aus. Bei "num_topics" (wie von Dir angegeben) wird nur die Anzahl der Themen ausgegeben, deswegen habe ich daraus "num_posts" gemacht. Wenn man diese PHP-Datei direkt aufruft, dann wird die (An)Zahl ausgegeben.

Wenn ich diese aber include, dann wird nichts ausgegeben bzw. übertragen. Hier noch 'mal die Angaben in der Startseite (die sich im Grundverzeichnis, also nicht im Ordner "forum" befindet):

Code: Alles auswählen

<?php
$zaehler = include '/srv/www/vhosts/Domain.de/forum/stats.php';
echo "Das Forum hat $zaehler Beiträge";
?>
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich wüsste nicht dass ich was von echo geschrieben habe. Bei mir steht return ;)
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Dr-Psycho-Fans
Mitglied
Beiträge: 12
Registriert: 01.12.2008 01:28

Beitrag von Dr-Psycho-Fans »

gn#36 hat geschrieben:Ich wüsste nicht dass ich was von echo geschrieben habe. Bei mir steht return ;)
Wer lesen kann, ist klar im Vorteil. Schau mal zwei Beiträge drüber:
Dr-Psycho-Fans hat geschrieben:(...) Denn die stats.php wird sowohl bei meiner als auch in Deiner Weise (mit echo statt return) mit der richtigen Zahl ausgegeben. (...)
Mal ganz abgesehen passiert bei return gar nichts, geschweige denn wird in die Startseite eine Zahl includet.

Bevor wir hier noch weiter rumschwafeln, schreib doch bitte einfach mal in Reinform den Code, den Du verwenden würdest, damit das hinhaut.

Danke.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich würde das sowieso anders machen (auch wenn return laut [php:include] und [php:return] funktionieren müsste):

Code: Alles auswählen

<?php
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);
?>
Und dann in der anderen Datei

Code: Alles auswählen

//was auch immmer davor....
include('pfad_zur_datei.php');
echo $config['num_posts'];
//was auch immer dahinter...
Oder auch direkt den ganzen Code hier in die andere Datei und dann ohne include.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Dr-Psycho-Fans
Mitglied
Beiträge: 12
Registriert: 01.12.2008 01:28

Beitrag von Dr-Psycho-Fans »

Nüscht... keine Variante ist erfolgreich. Dennoch danke für Deine Mühen.

Kann es sein, dass es so ne Art "Sperre" bei Phpbb gibt? Ich hab einmal alles in den Ordner forum gepackt. Da klappt der include... doch nicht im anderen Verzeichnis. Das liegt jedenfalls nicht an den Pfadangaben, die stimmen alle..
schicki_01
Mitglied
Beiträge: 6
Registriert: 30.11.2008 17:30

Re: Statistiken außerhalb von PhpBB (aber auf gleicher Domain)

Beitrag von schicki_01 »

Ich weiß, dass der Beitrag schon älter ist, jedoch denke ich, dass es ev. für andere auch interessant sein könnte.

Der Code, der hier gepostet wurde funktioniert einwandfrei - lediglich die gzip-Komprimierung muss deaktiviert werden.

Habs bei mir versucht - dann funktionierts.

LG
Schicki
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“