lorderich
Goto Top

PHP statements mit PHp erzeugen

Hallo zusammen,

ich habe eine Datei, in welcher per switch und case die Webseiten definiert werden, welche bei Aufruf einer definierten URL angezeigt werden sollen.

Bisher ist dieses auch ganz einfach, da die Webseiten Namen und dahinter liegenden Dateien statisch sind.

Als Beispiel dafür: 
case '/DE_Start':  
$includePage = 'pages_de/DE_Start.php';  
$title = "Testtitel";  
$keyword = "Ein paar Keywords";  
$description = "Ein Text als Beschreibung";  
$sitetopic = "Und ein paar Sitetopic Einträge";  
$author = "$Autor";  
break;

Diesen Eintrag habe ich in einer Datei mit de Namen siteconfig.php.
Nun muss ich weitere case Einträge erzeugen, allerdings mit Werten aus einer Datenbank.

$sql = "SELECT Columen1, Columen2 devhrdb.userlist WHERE Usertype = 'Internal' AND MAStatus = 'AKTIV'";  
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
     while($row = $result->fetch_assoc())
    {
---------------------------------------------------------------------------------------------------
Genau hier müsste ja jetzt pro Row aus der Datenbank ein neuer "case" Eintrag nach dem Muster wie oben enstehen. Allerdings stellt sich mir hier die Frage wie? Mit einem Echo statement ala   

echo case "'/DE_".$row['Columen1']."':" habe ich bisher kein wirklichen Erfolg gehabt.   
---------------------------------------------------------------------------------------------------
   	}
} else {
    echo "";  
}

Wie geht man das den am besten an?

Danke und Grüße

Lorderich

Content-ID: 320792

Url: https://administrator.de/contentid/320792

Ausgedruckt am: 14.11.2024 um 01:11 Uhr

LordGurke
Lösung LordGurke 13.11.2016 um 00:04:12 Uhr
Goto Top
Du kannst dir den Code als Variable zusammenkonstruieren und per eval() ausführen.
Du musst dann aber ganz besonders gut sicherstellen, dass ALLE externen Daten besonders gut escaped oder gefiltert werden, da sonst unter umständen Code eines Angreifers ausgeführt werden kann.

<?php

$variable = 'echo "das ist ein test";';  

eval($variable);
StefanKittel
Lösung StefanKittel 13.11.2016 um 00:36:22 Uhr
Goto Top
Hallo,

das ist quatsch so.

Du holst aus einer Datenbank alle Einträge die möglich sind und vergleichst diese einzeln.
Warum fragst Du nicht einfach die Datenbank? Die übernimmt solche Aufgabe liebend gerne.

Statt
case '/DE_Start':
lass die DB einfach nach dem Inhalt Deiner Variable welche Du bei Switch angibts suchen.

Stefan
131381
Lösung 131381 13.11.2016 aktualisiert um 09:21:54 Uhr
Goto Top
Zitat von @StefanKittel:
das ist quatsch so.
Sehe ich genau so, viel zu umständlich gedacht.

Du machst mit dem Pfad der URL eine SQL Query auf deine Datenbank, gibt es eine Eintrag lieferst du die Daten der Query entsprechend aus, wenn nicht, eine Fehlerseite. Ein Switch-Konstrukt ist hier also in keinem Fall nötig.
Das du die Daten wie Keyword, Title, Description etc. in die Datenbank legst sollte dann eigentlich klar sein.

Das was du vorhast macht man so in der Art nicht, dann bräuchtest du nämlich keine Datenbank ...

Gruß
Lorderich
Lorderich 14.11.2016 aktualisiert um 15:26:59 Uhr
Goto Top
Dank Eurer Hinweise habe ich es jetzt so gelöst:

$page = basename($_SERVER['PHP_SELF']); Ermittelt die aktuelle Seite
$errorPage = 'pages_de/DE_Error.php';
Definiert die Fehlerseite

$sql = "SELECT Vorname, Nachname, JobTitle, CV_URL_DocName from devhrdb.userlist WHERE CV_URL = '".$page."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
output data of each row
while($row = $result->fetch_assoc())
{
$Fullname = $row["Vorname"] . " " . $row["Nachname"];
$title = $Fullname;
$description = $Fullname." - ".$row["JobTitle"];
$includePage = $row["CV_URL_DocName"];
$sitetopic = "1, 2, 3";
$keyword = "1,2,3";
$author = "$Autor";

}
} else {
if(isset($_GET['site']))
{
switch($_GET['site'])
{
$_GET['var'] um die Seite zu Identifizieren.
case '/DE_Start':
$includePage = 'pages_de/DE_Start.php';
$title = "Titel";
$keyword = "Keywords";
$description = "Seitenbeschreibung";
$sitetopic = "Sitetopic";
$author = "$Autor";
break;

// Standard bzw. Startseite
default:
$includePage = 'pages_de/DE_Start.php';
$title = "Titel";
$keyword = "Keywords";
$description = "Seitenbeschreibung";
$sitetopic = "Sitetopic";
$author = "$Autor";
}
} else {
$includePage = 'pages_de/DE_Start.php';
$title = "Titel";
$keyword = "Keywords";
$description = "Seitenbeschreibung";
$sitetopic = "Sitetopic";
$author = "$Autor";

}
if(isset($includePage) && file_exists($includePage))
{

}
else
{
include($errorPage);
}

};
?>