Antworten auf deine Fragen:
Neues Thema erstellen

Contentausgabeproblem mit DIV-Layer und MySQL

PhaseV

Noch nicht viel geschrieben

Hallo,

ich habe ein kleines Problem mit meiner Website :D
Das Layout basiert komplett auf <div>-tags und funktioniert auch one MySQL, aber jezz will ich meine Site auf MySQL umstellen, aber ich bekomme es nicht hin, das die seiten im 'content'-div angezeigt werden, vor habe ich die Seite in ein Array gelegt, wodurch der aufruf ermöglicht wurde. Jetzt genug zur Problembeschreibung, ich zeig euch erstmal dem src-code.
PHP:
<?
$seite = array();
$seite['start'] = 'home.php';
?>
<div id="navi">
    <table>
        <th>Men&uuml;</th>
        <tr>
            <td><a href="index.php?seite=start">Start</a></td>
        </tr>
    </table>
</div>
<div id="content">
<?
    if (isset($_GET['seite'], $seite[$_GET['seite']])) {
        include $seite[$_GET['seite']];
    } else {
        include $seite['start'];
    }
?>
</div>
hat einer eine Idee wie ich das am besten löse?
Das Menu wird mittels while()-Schleife in ein $site-Array gelegt.

mfg
SiLvErStAr2411
 

Doitsu

Aktives Mitglied

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Sieht an sich korrekt aus, gibt PHP irgendwelche Fehlermeldungen?
error_reporting an? Wie schaut die Seite 'home.php' aus?
 

PhaseV

Noch nicht viel geschrieben

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Sieht an sich korrekt aus, gibt PHP irgendwelche Fehlermeldungen?
error_reporting an? Wie schaut die Seite 'home.php' aus?
naja mit der MySQL darstellung
PHP:
<div id="navi">
    <?php 
        echo '<table>
            <th>Men&uuml;</th>';
            while ($menuRow = mysql_fetch_array($menuQry)) {
                $menu = array();
                $menu['name'] = $menuRow['name'];
                echo '<tr><td><a href="index.php?menu='.$menu['name'].'">'.$menu['name'].'</a></td></tr>';		
               $menulnk['name'] = $menuRow['datei'];
            }
        echo '</table>';
    ?>
</div>
<div id="content">
    <?php 
        if (isset($_GET['menu'], $menu[$_GET['menu']])) {
            include $menulnk[$_GET['menulnk']];
        } else {
            include $menulnk['name'];
        }
    ?>
</div>
und PHP gibt die fehlermeldung aus, das die home.php nicht included werden kann.
 

PhaseV

Noch nicht viel geschrieben

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Problem behoben.

Gelöst habe ich es wie folgt:
PHP:
<div id="navi">
    <?php
        echo '<table><th>Men&uuml;</th>';
        while ($menuRow = mysql_fetch_array($menuQry)) {
            $menu[$menuRow['name']] = $menuRow['datei'];
            echo "<tr><td><a href='index.php?menu={$menuRow['name']}'>{$menuRow['name']}</a></td>";
        }
        echo '</table>';
    ?>
</div>
<div id="content">
    <?php 
        if (isset($_GET['menu'], $menu[$_GET['menu']])) {
	include $menu[$_GET['menu']];
        } else {
	include 'inc/home.php';
        }
    ?>
</div>
 

MatthiasM2D

Nicht mehr ganz neu hier

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Hi,

das was ich da lese ist meiner Meinung nach schon harter Tobak. Sorry wenn ich das so sagen muss. ;)

Zu dem kleineren Übel. Du mischst deinen PHP Code direkt mit deinem entgültigen HTML /CSS. Das ist an dieser Stelle nicht so schlimm, aber es ist nicht besonders elegant. Vorallem wenn du irgendwann mal eine Änderung machen möchtest, welche dein Layout tiefgreifend verändert. Ich würde an dieser Stelle sowas wie smarty tags empfehlen. Damit trennst du beides sauber.

Aber nun das große Übel. Du programmiert Dir eine Sicherheitslücke die so groß ist, das wohl ein ganzer LKW durchpasst.

Du prüfst lediglich, ob die Variable $_GET['menu'] gesetzt ist und holst Dir dann die selibige Datei per include in deinen Code. Das bedeutet, das jemand jede beliebige Datei direkt in deinen Code includen kann. Sowas nennt man Remote file inclusion - Wikipedia, the free encyclopedia

PHP:
if (isset($_GET['menu'], $menu[$_GET['menu']])) { 
    include $menu[$_GET['menu']]; 
        } else { 
    include 'inc/home.php'; 
        }
Das würde ich bei deiner weiteren Programmierung dringend beachten. Wenn du es einfach halten möchtest benutze eine switch case Abfrage zum generieren deiner Contentseiten.

Gruß Matthias
 

Doitsu

Aktives Mitglied

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Du prüfst lediglich, ob die Variable $_GET['menu'] gesetzt ist und holst Dir dann die selibige Datei per include in deinen Code. Das bedeutet, das jemand jede beliebige Datei direkt in deinen Code includen kann. [..]

Sein Code ist voellig korrekt - wie willst du bitte 'jede beliebige Datei' icluden?
durech index.php?menu=xy.php? Geht nicht, dazu muesste 'xy.php' in dem Array $menu stehen - tut es aber wahrscheinlich nicht.

Was ich aber nicht verstehe ist, warum es per Datenbank abfrage gesehen soll - die ist total Sinnlos, da sich im Menue wohl kaum staendig was aendern wird?
Die Variante mit dem 'statischen' Array ist da viel eleganter.
 

MatthiasM2D

Nicht mehr ganz neu hier

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Sein Code ist voellig korrekt - wie willst du bitte 'jede beliebige Datei' icluden?
durech index.php?menu=xy.php? Geht nicht, dazu muesste 'xy.php' in dem Array $menu stehen - tut es aber wahrscheinlich nicht.

Das ist richtig, jedoch lässt sich die Abfrage für das Menu Array durch einen Null Character wieder entfernen oder mache ich hier einen Denkfehler?

Gruß
 

Doitsu

Aktives Mitglied

AW: Contentausgabeproblem mit DIV-Layer und MySQL

Wuesste nicht wie, weiss aber auch gerade nicht, ob ich dich richtig verstehe.
Da man als $_GET nur Strings zurueckbekommt, ist es nicht moeglich ein 'Null Char' zu uebergeben, und selbst wenn, wuerde es direkt in die else-Bedingung gehen. Oder was meinst du jetzt?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben