PHP Link dynamisch zusammensetzen, dringend :)

BoDyGuArD

Lt. Junior Grade
Registriert
Feb. 2003
Beiträge
315
Hey Community,

sitze gerade an einem Problem an dem ich beinahe verzweifle und Hilfe brauche..

Also, folgendes:
Ich rufe eine URL folgendermaßen und mit folgenden Parametern auf:
"www.xyz.de/index.php?content=home&lang=de"
Ich möchte nur mit dem Template "index.php" arbeiten und den content einfach simpel anhand des Aufrufes an bestimmten Stellen includen. (externe Dateien, content_..._de/en.php)

Folgendermaßen möchte ich mir nun aus dem obigen Aufruf das "include-file" zusammensetzen:
content_home_de.php

Bis jetzt sieht es so aus:
Code:
<?php 
	# Content includen!
	$content = $_GET['content'];
	$contents = array('home', ...);

	if (!empty($content)) 
	{
		if(in_array($content,$contents)) 
		{
			$content .= '.php'; // [B]Hier fehlt der passende Code zum zusammensetzen![/B]
			include($content);
		}
		else 
		{
			echo 'Page not found. Return to <a href="index.php">strong>index</strong></a>';
		}
	}
	else 
	{	
		include(...);
	}
?>

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt!

Die Seite soll 2-sprachig sein, es sollen einzelne Files mit dem Inhalt und der Form content_"Content-Aufruf-In-Adresszeile"_"Sprach-Aufruf-In-Adresszeile".php
included werden.

Oder gehts leichter?

Vielen Dank für die Hilfe!
Tobi
 
$content = 'content_' . $_GET['content'] . '_' . $_GET['lang'] . '.php';

?!
 
Hi,

ich habe deinen Wunsch mal nachgebaut und hoffe, dass das so in deinem Interesse ist.
Habe lange nichts mehr mit PHP gemacht, sei als bitte gnädig mit mir ^^
Wenn du die Seite folgendermaßen aufrufst, sollte die zu includende Datei per echo ausgegebene werden (zu Testzwecken): seite.php?content=home&lang=en

PHP:
<?php
	$sprache = $_GET['lang']; 
	$content = $_GET['content'];
	$seiten = array('home', 'about', 'impr');
	
	if((in_array($content, $seiten)) AND ($sprache == "de" OR $sprache == "en" ))
	{
		$einbinden = "content_" . $content . "_" . $sprache . ".php";
		echo $einbinden; // zum Testen
		//include ($einbinden); für später
	}
	else
	{
		echo "Die aufgerufene Seite existiert so nicht.";
	}
?>


Gruß
 
Surviv0r schrieb:
$content = 'content_' . $_GET['content'] . '_' . $_GET['lang'] . '.php';

?!

btr.fly schrieb:
Hi,

ich habe deinen Wunsch mal nachgebaut und hoffe, dass das so in deinem Interesse ist.
Habe lange nichts mehr mit PHP gemacht, sei als bitte gnädig mit mir ^^
Wenn du die Seite folgendermaßen aufrufst, sollte die zu includende Datei per echo ausgegebene werden (zu Testzwecken): seite.php?content=home&lang=en

PHP:
<?php
	$sprache = $_GET['lang']; 
	$content = $_GET['content'];
	$seiten = array('home', 'about', 'impr');
	
	if((in_array($content, $seiten)) AND ($sprache == "de" OR $sprache == "en" ))
	{
		$einbinden = "content_" . $content . "_" . $sprache . ".php";
		echo $einbinden; // zum Testen
		//include ($einbinden); für später
	}
	else
	{
		echo "Die aufgerufene Seite existiert so nicht.";
	}
?>


Gruß
Funktioniert super, vielen Dank für die Hilfe!
 
Frage am Rande: wäre
PHP:
if(is_file("content_" . $content . "_" . $sprache . ".php")) include("content_" . $content . "_" . $sprache . ".php");
else echo "seite existiert nicht";

nicht ausreichend? is_file erlaubt doch auch nur local, weshalb injections hier nicht das thema sein sollten.
 
Stimmt, schöne und einfache Lösung. Da kann man sich das Array und die Sprachabfrage sparen :)
 
Guter Lösungsvorschlag!
Jetzt gibts noch nen neues Problem, schließt leider an die Lösung von diesem an.

Ich möchte in ein leeres div per include (deshalb das ganze Heckmeck) mein HTML-Layout + Inhalt includen.
Leider bekomme ich es nicht hin, in eine .php-Seite html code funktionierend zu includen! Wie mache ich das?! Per echo zickt alles rum!

Kann mir hierzu bitte auch nochmal jemand weiterhelfen?!

Vielen Dank!
 
volcem schrieb:
PHP:
<div id=bla class bla>
include("seite.php");
include("seite.html");
include_once("seite.php");
</div>

??
Und das jetzt noch bezogen auf meine Problemstellung, das ich erst während des Aufrufes entscheide, welche Datei ich include?

PHP:
if(is_file("content_" . $content . "_" . $sprache . ".php")) 
    include("content_" . $content . "_" . $sprache . ".php");
else echo "seite existiert nicht";

Sprich, da nen html include?
 
Wenn ich dich richtig verstanden habe willst du wenn es die Seite nicht gibt eine "externe" einbinden?
Wenn ja:

PHP:
<?PHP
if(is_file("content_" . $content . "_" . $sprache . ".php"))
 {  
    include("content_" . $content . "_" . $sprache . ".php"); 
    } else {
    include_once("deine_html_seite.html");
    } ?>

Wahlweise könntest du auch gleich deinen html code reinschreiben(wenn nicht zuviel ist(wegen der übersicht))

PHP:
<?PHP
if(is_file("content_" . $content . "_" . $sprache . ".php"))
 {  
    include("content_" . $content . "_" . $sprache . ".php"); 
    } else { ?>
    <p>Hier dein HTML-Code, ganz normal in HTML geschrieben</p>
    <?PHP } ?>
 
nein, ich möchte, WENN es den Aufruf GIBT .html includen. Ich versuchs mal auf deine erste Art und Weise :)
 
Funktioniert, er macht aber aus allen Umlauten das hier: �
Wie kann ich das lösen?
 
lol versuche mal statt ö &ouml; zu schreibe usw.
ü = &uuml;
ä = &auml;
Ü = &Uuml; usw...........
MfG
Destruction
 
Das ist, wenn ich große Textinhalte include etwas umständlich, genau deshalb hab ich ja hier Rat gesucht! :) Da muss es doch eine Möglichkeit geben?!
 
Gibt folgende Möglichkeiten:
Du setzt im Header direkt utf_8 oder iso-8859-1
utf_8 ist hier wohl die bessere Wahl.

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Dann kannst du auch alle in der 'variable' "umwandeln" lassen:

Nennt sich " htmlentities($deinevariable) wo ÄÜÖ etc drin sind "
Und für den Rest, diese Funktion: html_special_chars()

Aber besser ist das wenn du deine Dateien in utf_8 codierst.
Einfach zwischen deinen <head>bla</head> bereich s.o kopieren und gut.
 
Achte bitte darauf, dass
  • Die Kodierung der HTML-Datei (im Texteditor zb utf8 enistellen)
  • Die Kodierung der PHP-Datei (im Texteditor zb utf8 enistellen)
  • META Charset-Definition in der HTML-Datei (<meta http-equiv="Content-Type" content="text/html; charset=utf-8">)
  • Charset des Webservers (header ("Content-type: text/html;charset=utf-8");)
identisch sind
 
Einhörnchen schrieb:
Frage am Rande: wäre
nicht ausreichend? is_file erlaubt doch auch nur local, weshalb injections hier nicht das thema sein sollten.

Wenn du damit leben kannst, dass du somit Bugs oder Exploits in is_file (die in Zukunft jemand finden könnte) ausgesetzt bist, geht das okay :)
 
Zurück
Oben