Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
$templates->get Anzeige Fehler
#1
Hallo,
ich habe in eine Seite, die nicht zum MyBB gehört, per require_once die global.php herangeholt:

PHP-Code:
define("IN_MYBB"1);
define("KILL_GLOBALS"1);
define("NO_ONLINE"1);
chdir(ROOT."/forum/");
require_once(
"global.php"); 

Außerdem habe ich ein neues Template "page_singles" geschrieben:
PHP-Code:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<
tr><td background="{$imageroot}/bg_content.jpg">
<
img src="{$imageroot}/single.jpg" alt="Single" />
<
table border="0" cellpadding="0" cellspacing="0" width="100%">
<
tr><td><img src="{$cover}alt="Cover" /></td>
<
td width="100%">{$title}</td></tr></table>
</
td></tr>
<
tr><td height="1" bgcolor="000000"></td></tr></table><br /> 

Das Ganze soll dann an ein Forum gebunden Funktionieren:
PHP-Code:
<?php
//Header
$seitenlink "singles.php";
include(
"./include_ob.php");
//Content Start

$singlesforum "3";

if(
$mybb->user['ppp'] == "0" OR $mybb->user['ppp'] = "")
{
    
$ppp $mybb->settings['postsperpage'];
}
else
{
    
$ppp $mybb->user['ppp'];
}

if(!isset(
$mybb->input['page']) OR $mybb->input['page'] < 2)
{
    
$query $db->query("SELECT firstpost FROM ".TABLE_PREFIX."threads WHERE fid = '$singlesforum' ORDER BY dateline ASC LIMIT $ppp");
    while(
$row $db->fetch_array($query))
    {
        
$query2 $db->query("SELECT subject, message FROM ".TABLE_PREFIX."posts WHERE pid = '$row['firstpost']' LIMIT 1");
        
$row2 $db->fetch_array($query2);
        
$cover between($row2['message'], "[cover]""[/cover]");
        
$file between($row2['message'], "[file]""[/file]");
        
$title between($row2['message'], "[title]""[/title]");
        eval(
"\$output = \"".$templates->get("page_singles")."\";");
        echo(
$output);
    }
}
else
{
    
$page ceil(intval($mybb->input['page']));
    
$getpage $page $ppp;
    
$query $db->query("SELECT firstpost FROM ".TABLE_PREFIX."threads WHERE fid = '$singlesforum' ORDER BY dateline ASC LIMIT $getpage,$ppp");
    while(
$row $db->fetch_array($query))
    {
        
$query2 $db->query("SELECT subject, message FROM ".TABLE_PREFIX."posts WHERE pid = '$row['firstpost']' LIMIT 1");
        
$row2 $db->fetch_array($query2);
        
$cover between($row2['message'], "[cover]""[/cover]");
        
$file between($row2['message'], "[file]""[/file]");
        
$title between($row2['message'], "[title]""[/title]");
        eval(
"\$output = \"".$templates->get("page_singles")."\";");
        echo(
$output);
    }
}

//Content End
include(ROOT."/include_un.php");
?>

Leider tut es das genau nicht. In der include_ob.php sind alle Navigationsleisten und das Heranholen der global.php enthalten. Doch nicht einmal die Navigation wird angezeigt, der Quellcode ist leer. Es scheint also irgendwas die ganze Ausgabe zu verhindern. Ich vermute es ist $templates->get(), weiß aber zum einen nicht warum das so nicht funktioniert, und auch nicht sicher, ob es wirklich $templates->get() ist. Die Syntax bin ich noch ein dutznd mal durchgegangen.
Sobald ich alles zwischen Content Start und Content End auskommentiere, wird die Navigation wieder ausgegeben!!!

Könnt ihr mir helfen?
[Bild: Nirgendssicher.jpg]
#2
Wo wird ROOT definiert? In welche Datei hast du den 1. Code eingefügt?
Ist die PHP-Fehler-Anzeige des Servers an?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#3
Nein Errors werden leider nicht angezeigt, kann man das als normaler Nutzer (ohne an die php.ini heranzukommen) ändern?

ROOT ist das Stammverzeichnis:
/web/1/000/021/915/44312/htdocs

Der erste code findet sich in der include_ob.php

Übrigens:
Ich habe die Templates nochmal in Datei-Form ohne Nutzung des MyBB getestet. Resultat: Es funktioniert auch nicht.
[Bild: Nirgendssicher.jpg]
#4
Ok, hat sich erledigt, danke für den Tipp mit den nicht angezeigten Fehlern (war ich nicht gewohnt...).

  1. Fehlendes = in der if-Abfrage
  2. im $db->query darf kein $xxx['xxx'] stehen, sondern nur das ganze ohne '


Danke für deine Hilfe!!
[Bild: Nirgendssicher.jpg]
#5
Um sich an MyBB zu halten, solltest du vielleicht auch
PHP-Code:
echo($output); 
durch
PHP-Code:
output_page($output); 
ersetzten.
Zudem werden auch die Variablen in den MySQL-Abfragen nicht richtig ausgeklammert. Bette jede Variable in ".VARIABLE." ein, das ist etwas konformer.
#6
Jo danke für den Tipp.
Mit den Variablen in der Abfrage habe ich jetzt mehrere Male knall hart zu spüren bekommen, dass das wohl nicht so pralle ist.
Mit output_page(); habe ich noch so meine Sorge. Ich habe mich schon so daran gewöhnt echo(); zu benutzen, dass ich das auch lieber weiterhin mache, und dann das ganze in den besagten include-Dateien mit ob_start() usw. "zu sammeln". Ich weiß noch nicht gewiss, woran es liegt, aber das Design wird mit dieser Lösung komplett verzogen. Kann das daran liegen, dass ich zwischendurch, wenn ich viel HTML habe, PHP "beende" (?>) und dann nach dem Code wieder einsetze (<?php)??
[Bild: Nirgendssicher.jpg]
#7
Was meinst du mit "verzogen"? Hast du einen Link?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#8
nein einen link habe ich nicht mehr, aber die Bilder usw. waren halt nicht mehr an den stellen, wo sie sein sollten. Dann war mal da ein bild und mal hier ein bild, ....
Man konnte das Design scshon erkennen, aber es war halt nicht mehr so sehr geordnet, sondern vieles ein stück versetzt.
[Bild: Nirgendssicher.jpg]