Sections mit Mysql?

cctnt

Erfahrenes Mitglied
Hallo Leute

Ich bin gerade beim umschreiben meines Page Codes. Bis jetzt arbeite ich bei sections mit dateien, ich möchte das allerdings jetzt mit MySQL überarbeiten, und zwar das ich via ACP meine sections adden bzw. editen kann.

Wie kann ich das durchführen das die Page auch sicher ist?

Für die Abfrage ob eine Section vorhanden ist bzw das sie angezeigt werden, verwende ich jetzt diesen code

PHP:
    if(isset($_GET['section']) AND isset($files[$_GET['section']])) {
        include $files[$_GET['section']];
    } else {
        include $files['news'];
    }

Meine Frage: Wie muss ich das umändern damit das auch mit MySQL funktioniert?

mfg
 
Du übergibst dein $_GET['section'] an einen MySQL-Query, der prüft, ob ein entsprechender Eintrag überhaupt in der DB vorhanden ist. Anschließend soll der relevante Inhalt dargestellt werden:

PHP:
$stmt = $db->prepare("SELECT * FROM sections WHERE sectionname = :section");
$stmt->bindValue(':section', $_GET['section']);
$stmt->execute();
if($data = $stmt->fetch()) {
    // hier etwas mit den Daten machen
}
 
Ehm danke für die schnelle Antwort aber wie schon in mehreren Topics gesagt, bin ich etwas eingerostet.

Könntest du mir das bitte Zeile für Zeile erklären?

Insbesonderes :section?

Steh da etwas auf der Leitung.

Und warum krieg ich keine Mail benachtrichigung wenn hier wer im Topic was postet?

mfg
 
Danke für den Link allerdings kann ich nicht darauf zugreifen. Er schreibt das ich was verändern will.

mfg
 
Liegt wahrscheinlich daran, dass das Tutorial noch nicht freigegeben wurde. Dann kann ich dir noch eine etwas kürzere Erklärung bieten:

Prepared Statements vermeiden aufgrund ihres Aufbaus das einschleusen von sog. SQL-Injections. Sie haben noch ein paar andere Vorteile, aber die möcht ich jetzt nicht noch mal ausklambüstern. Steht ja dann in dem hoffentlich bald freigegebenen Tutorial.

Zum Code:

In der ersten Zeile wird das Statement vorbereitet (präpariert => "to prepare").

In der zweiten Zeile wird dem Platzhalter ":section" ein Wert zu gewiesen. Bevor das getan wird, schaut sich die Engine den zu bindenden Wert an und korrigiert ihn gegebenfalls. Das bedeutet, das dich nicht mehr interessieren braucht, ob ein String escaped ist oder nicht.

In der dritten Zeile wird dem DB-Server signalisiert, das er den Query nun ausführen soll (execute).

Anschließend kann man in einer Schleife die Daten aus der Ergebnismenge abholen (fetch).

Nach meinem Dafürhalten is das der bessere Weg, auf eine DB zuzugreifen. Das einzige, was noch besser wäre, sind Stored Procedures, aber das is noch etwas komplizierter. PS sind ein Schritt in die richtige Richtung, PHP etwas sicherer zu machen. Dummerweise werden sie erst voll ab PHP5 unterstützt, die Extension PDO muss in phpinfo() auftauchen.
 
Danke für die erklärung.

Ich verwende PHP 4 und die PDO erweiterung finde ich nirgends in phpinfo() ausser ich übersehe sie.

Gibt es eine andere möglichkeit ausser bei meiner alten möglichkeit zu bleiben?

Seh ich das richtig das dein code of OOP aufbaut?

mfg
 
Zuletzt bearbeitet:
Wenn ich dich richtig verstehe, muss ich die dateien die in der zip drinnen waren nur in den class ordner meiner page raufladen, die dateien umbauen damit alles verwendet wird und dann müsste es funktionieren?

mfg
 
Diese Frage kann ich dir nicht intelligent mit ja oder nein beantworten, da ich die Struktur deiner Page nicht kenne. Vorsichtig gesagt, mein ich einfach mal ja.

1. Zip entpacken, in einen seperaten Ordner am besten, das man den Überblick behält.

2. Haupt-Datei in ein zentrales Script, was von allen andern auch includiert wird, einbinden.

3. In dem zentralen Script am besten die DB-Verbindung aufbauen und das erzeugte Objekt als globale Variablen überall aufrufen oder besser an die Funktionen mit übergeben.
 
Zurück