Deutschland United States United Kingdom
ContentLion - Open Source CMS

Start probleme

Start probleme

Hallo, da
bin ich wieder.

Ich hatte schon
im vergangenen Jahr mit diesem CMS Tutorial mein Glück versucht.
Da schien es mir damals ratsam erstmal meine OOP Kenntnisse zu erweitern.
Nun bin ich kein Profi Programmierer aber auch kein ahnungsloser, doch habe ich schon im Kapitel 7 so
meine Probleme.

Denn alles was da zum Test erscheinen soll bleibt verborgen, selbst
einfache Echo “Hallo Welt“ ausgaben zum prüfen der include Verbindung
bleiben verschollen.
Nun kann es sein das ihr die einfache Dinge voraussetzt, ein HTML
Grundgerüst gibt es erst ab Kapitel 12. Eine index.php kommt auch erst dann.
Ist das der Fehler oder muss es auch ohne diese Angaben laufen.

Grüße Cedric

Kannst du mal hinter dem mysql_query in der getSetting funktion ein echo mysql_error() ausgeben lassen?

Vorausgesetzt wird nichts. Ein HTML-Grundgerüst ist nur für die ersten Schritte noch unwichtig, da es erstmal um die reine Datenstruktur geht. Die richtige Ausgabe kommt später.

Oh Sorry, das war dann doch nur ein Schreibfehler, leider an
einer Stelle wo es nur noch peinlich ist.

Nun das ist auch der Grund warum ich dort nicht gesucht
habe.

Doch gleich das nächste Problem.

Kapitel 8 und 9 Content auf die Seite bringen.

in der index.php steht dieses
include("system/filterfilename.php");
// include("content/articles/".$_GET['include']);
include(filterfilename("content/articles/".$_GET['include']));

und in der filterfilename.php steht dieses

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
 function filterfilename($filename){
    $filename strtolower($filename);
    $filename preg_replace("/[^a-z0-9\-\/]/i","",$filename);
    if($filename[0] == "/"){
        $filename substr($filename,1);
    }
    $filename .= ".php";
    if(!file_exists($filename)){
        $filename "content/articles/errors/404.php";
    }
    return $filename;
}


Das ganze fürt dann zu dieser Fehlermeldung.

Warning: include(content/articles/errors/404.php): failed to open
stream: No such file or directory in

/home/xxxxx/www/xxx/cms/index.php on line 8

Warning: include(): Failed opening 'content/articles/errors/404.php' for
inclusion (include_path='.:/usr/share/php:/usr/share/pear') in

/home/xxxxx/www/xxx/cms/index.php on line 8

was muss ich hier ändern?

die Ordner content/articles und als Datei testseite.php

Grüsse Cedric

Kannst du mal zwischen Zeile 7 und 8 mit echo $filename den Dateipfad ausgeben lassen und dann nachschauen, ob die Datei vorhanden ist?

für echo $filename; gibt es keine ausgabe.

echo $_GET['include']; ergibt testseite.html doch diese Datei endet auf .php.

kann das an der .htaccess liegen?

du hast das aber schon in der filterfilename.php eingefügt, oder?
Kannst ja auch mal den .htaccess-Code posten

Da ich ja schon einmal mit diesen Tut. begonnen habe,
habe ich mir mal die alten Blogs angesehen und im Kapitel 12 in den Blogs
fragt Stefan Wienströer ob es den eine content/articles/errors/404.php gibt. Und das ist Nein.


Wenn ich nun einen Ordner “errors“ und eine Datei “404.php“ anlege dann verschwinden auch die Warnungen.

Grüsse
Cedric

Aber deine Seite wird immer noch nicht angezeigt, oder?

Nun ich bin jetzt im Kapitel 19. Seiteneinstellungen in der Klasse Page.

Und in der http/cms/index.php

Da sehe ich bis jetzt nur diese drei Notice Meldungen.

Notice: Undefined index: include in /home/xxx/www/xxx/cms/index.php on line 11
Notice: Undefined variable: currentpage in/home/xx/www/xx/cms/system/sys.php on line 23
Notice: Trying to get property of non-object in /home/xx/www/xx/cms/system/sys.php on line 23 Notice: Undefined
index: include in /home/xx/www/xx/cms/system/sys.php on line 11

Und wenn ich cms/index.php?include=testseite eingebe erhalte ich die Ausgabe Testseite aus der Datei testseite.php,
ausgaben aus der DB habe ich nicht.

grüsse Cedric

Noch was wenn ich auf die Datei index.php im Ordner default
zugreife

Also cms/system/skins/default/index.php

Erhalte ich diese Meldung

Fatal error: Class 'sys' not found in /home/xxx/www/xxx/cms/system/skins/default/index.php on line 6

In der Zeile 6 steht diese Anweisung sys::includeHeader();

Wenn ich mich noch recht erinnere wurde die sys in der index.php im root eingebunden. Bei einem expliziten Aufruf der index.php im default Ordner der skins greift ja der Aufruf nicht und PHP weiß nicht was das für eine Funktion ist.

Auch in der derzeitigen Version werden die system-Dateien in der index.php im root des Webservers eingebunden. Allerdings durch die autoload.php welche dann die einzelnen Komponenten lädt.

Ich hoffe ich konnte dir ein wenig behilflich sein

MfG

Daniel von den CL-Entwicklern

Nun, ich habe das Tut. noch einmal durchlaufen und komme
bis Kapitel 15 ohne Fehlermeldung. Ab Kapitel 16 stimmt was nicht.

Ich erhalte in Kapitel 15 noch eine Ausgabe

include(SkinController::getCurrentSkinPath()."/test.php");

gibt Test erfolgreich zurück skins/defult/test.php

ab Kapitel 16 habe ich dann zwei Fehlermeldungen und keine Ausgabe.

Notice:Undefined index: include in /home/xxx/www/xxx/cms/index.php on line 11
line 11 ist hier die Zeile 6
Script in der index.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?PHP
include("system/dbconnect.php"); 
include("system/settings.php"); 
include("system/classes/skincontroller.php"); 
include("system/filterfilename.php"); 
include(filterfilename("content/articles/".$_GET['include']));
include("system/sys.php");
include(SkinController::getCurrentSkinPath()."/index.php");
?>


Notice:Undefined index: include in /home/xxx/www/xxx/cms/system/sys.php on line 11
line 11 ist hier die Zeile 6
Script in der system/sys.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?php
class sys
{
function includeContent()
{
include(filterfilename("../content/articles/".$_GET['include'])); 
}
}
?>


Script in der system/skins/default/index.php

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
<!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="de">
<head>
</head>
<body>
<?PHP
sys::includeContent();
?>
</body>
</html>


Leider erhalte ich bei diesem Link ein Error 404 – Not found
http://cms.stevieswebsite.de/testseite.htm
ist es möglich diesen Link wieder zu beleben.
oder könnt ihr mir sagen was ich jetzt als Ausgabe sehen müsste.

Danke Cedric

Hi,

zu dem Zeitpunkt werden Notizen noch nicht unterstützt, musst die in deinen PHP-Einstellungen deaktivieren.
Ansonsten zeig mal deine .htaccess.

Gruß Stefan

Die htaccess sieht so aus


RewriteEngine on
RewriteCond %{REQUEST_URI} /(.*).htm
RewriteRule (.*) /index.php?include=%1

Ich weiß, dass ich die Notice unterdrücken kann und das sie nicht wirklich wichtig sind.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Cedric« (15. Februar 2012, 15:10)


Was passiert, wenn du die index.php mal direkt mit dem Parameter aufrufst, also index.php?include=deinunterseite

Kannst mal nen Screenshot davon posten?

Hallo, sorry das ich mich erst jetzt wieder melde, musste arbeiten.

Ich bin jetzt bei dem Kapittel "CMS Menü Klasse" und erhalte die Ausgabe.

  • Testseite 1
  • Testseite 2
  • Testseite 3
Ist das Ok so oder müsste ich schon mehr sehen?

Das sieht schon gut aus ;-)
Wenn du jetzt weitere Menü-Einträge hinzufügst sollten sie da erscheinen.

So nun habe ich endlich meinen Fehler gefunden, mann sollte die Skripte die hier geschrieben stehen auch richtig lesen.

Ich habe immer http://cms/index.php?include=testseite.html oder die Endung .php geschrieben.

Das bringt natürlich einen Fehler wenn die Funktion filterfilename den Punkt löscht und ein .php anhängt.

Dann kommt ein http://cmsindex.php?include=testseitehtml.php raus und das kann’s nicht sein.

Doch gleich zum nächsten Problem
Kapitel 31. CSS-Stylesheet auslagern Du schreibst

Jetzt kommen alle statischen CSS-Einstellungen in den
StyleSheet style.css im Skin-Verzeichnis. Hier wurde auch der Path zum
Hintergrundbild geändert:


Dieses Skin-Verzeichnis habe ich nicht. Ich finde auch in den Downloads keinen Hinweis auf ein solches Verzeichnis.

Wo bitte muss ich zu diesem Zeitpunkt das style.css speichern?

Danke Cedric

Hier habe ich mir einen Fehler eingebaut.
Kapitel 51 bis 54
Bei Menü bearbeiten und Einträge Bearbeiten bekomme ich diese Fehlermeldung.
Fatal error: Class 'Menu' not found in /home/manfred/www/projekte/cms/admin/includes/menu-edit.php on line 55

menu.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
//echo "system_classes_Menu.php<br/>";

    class Menu
    {
        function display($id$globalstart,$globalend$elementstart,$elementend,$class)
        {
            global $dbpraefix;
            $res mysql_query("SELECT title,href FROM ".$dbpraefix."menu  WHERE menuID = '".$id."' ORDER BY id");
        echo $globalstart;
        $i 1;
        while($row mysql_fetch_row($res))
        {
            echo $elementstart."<a href="".$row[1]."" title="".$row[0]."" class="".$class." menue-".$id."-".$i."">".$row[0]."</a>".$elementend;
            $i++;
        }
        echo $globalend;
        }
        function addEntry($menu,$title,$href)
        {
            global $dbpraefix;
            $res mysql_query("SELECT MAX(id) FROM ".$dbpraefix."menu WHERE menuID = '".$menu."'");
            $row mysql_fetch_row($res);
            $id $row[0] + 1;
            return mysql_query("INSERT INTO ".$dbpraefix."menu (id,menuID,title,href)
                                VALUES('".$id."','".$menu."', '".$title."','".$href."')");
        }
        function editEntry($menu,$id,$title,$href)
        {
            global $dbpraefix;
            return mysql_query("UPDATE ".$dbpraefix."menu SET  href = '".$href."',  title = '".$title."'
                                WHERE id = '".$id."' AND menuID = '".$menu."'");
        }
    } // End class Menu
?>

menu-edit.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?PHP
  if($_POST['add'])
  {
        if(trim($_POST['newtitle']) != "")
        {
            if(trim($_POST['newurl']) != "")
            {
                $res Menu::addEntry(mysql_real_escape_string($_GET['menu']),
                              mysql_real_escape_string($_POST['newtitle']),
                              mysql_real_escape_string($_POST['newurl']));
            if($res)
            {
                echo "<p>Eintrag hinzugef&uuml;gt!</p>";
            }
            else{
                echo "<p>Eintrag nicht hinzugef&uuml;gt!</p>";
                }
            }
            else{
                echo "<p>Bitte geben Sie ein Link-Ziel ein</p>";
                }
        }
        else{
            echo "<p>Bitte geben Sie einen Link-Titel ein</p>";
            }
    }
    else if($_POST['save']){
    foreach($_POST as $param=>$value){
      if(strlen($param) >= 6){
        if(substr($param,-5,5) == "_href"){
          $entries[substr($param,0,-5)][href] = $value;
        }
        else if(strlen($param) >= && substr($param,-6,6) == "_title"){
          $entries[substr($param,0,-6)][title] = $value;
        }
      }
    }
    foreach($entries as $id=>$params)
    {
    Menu::editEntry(mysql_real_escape_string($_GET['menu']),
                    mysql_real_escape_string($id),
                    mysql_real_escape_string($params[title]),
                    mysql_real_escape_string($params[href]));
    }
  }

?>
  <?PHP
  print_r($_POST);
?>
<h1>Men&uuml; bearbeiten</h1>
    <form action="index.php?page=menu-edit&menu=<?PHP echo $_GET['menu']; ?>" method="POST">
        <h2>Eintr&auml;ge Bearbeiten</h2>
  <?PHP
    Menu::displayEditable(mysql_real_escape_string($_GET['menu']));
  ?>
     <input name="save" type="submit" value="Speichern"/>

        <h2>Neuen Eintrag hinzuf&uuml;gen</h2>
        <input name="newtitle" />
        <input name="newurl" value="http://" />
        <input name="add" type="submit" value="Hinzuf&uuml;gen"/>
    </form>


Hast Du einen Tipp was ich ändern müsste
Grüsse Cedric