Seite 1 von 2

PHP. Include Variabler dateinamen

Verfasst: 18.04.2010, 13:16
von Tracker
Hallo,

und sorry das ich nerve.

Ich würde gerne Dateien in eine Seite per include laden.
Welche datei es sein soll, soll mittel variabler übergeben werden.

Also domain.de/?a=x&b=y&c=z&d=a

Code sieht so aus

Code: Alles auswählen


<?php include '/secure/include/titel/$a-$b/$c-$d.php';?>

Tut sich aber nix.

Mittels "echo" aber getestet das die Variablen richtig übergeben werden.

Könnte wetten das es wieder nur ein "Kommafehler" ist und ich aufm schlauch steh ...

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 18.04.2010, 13:27
von TBT
bei ' werden die Variablen nicht ersetzt, nimm "

Verfasst: 18.04.2010, 13:41
von Tracker
oh mann ... wieviel man in 5 jahren doch vergisst.

Danke

Verfasst: 18.04.2010, 13:43
von PHPSchmied
Warum sollte er " nehmen wenn er den trick schon raus hat wie PHP schneller wird.
Wenn dann erkläre ihm das auch richtig und führe ihn nicht wieder auf ein schlechten Programmierstil.

Code: Alles auswählen

<?php 

$a = $_GET&#91;'a'&#93;;
$b = $_GET&#91;'b'&#93;;
$c = $_GET&#91;'c'&#93;;
$d = $_GET&#91;'d'&#93;;
$file =  '/secure/include/titel/'.$a.'-'.$b.'/'.$c.'-'.$d.'.php';

if &#40;file_exist&#40;$file&#41;&#41; &#123;
   include $file; 
&#125;

?>

Re: PHP. Include Variabler dateinamen

Verfasst: 18.04.2010, 13:43
von Mork vom Ork
Tracker hat geschrieben:Ich würde gerne Dateien in eine Seite per include laden. Welche datei es sein soll, soll mittel variabler übergeben werden. Also domain.de/?a=x&b=y&c=z&d=a
Oha. Du bist dir hoffentlich im Klaren darüber, dass du gerade bei solchen Aktionen den Inhalt der Parameter strikt prüfen musst.

Code: Alles auswählen

<?php include '/secure/include/titel/$a-$b/$c-$d.php';?>
1. In Zeichenketten, die von einfachen Anführungszeichen umklammert werden, funktioniert die PHP-Unart, Variablen zu ersetzen, nicht.

2. Ich mag nicht so recht glauben, dass die einzufügenden Dateien in einem Verzeichnis mit dem Pfad /secure liegen sollen – dieses würde im Wurzelverzeichnis des Servers liegen und da gibt es nur ein Dutzend fest definierter Systemverzeichnisse, zu denen /secure nicht gehört, das da nicht hinpasst und wo du normalerweise auch keinen Zugriff drauf hättest.
Du meinst vermutlich eher das Basisverzeichnis, das du auch per FTP siehst. Dieses findest du in $_SERVER["DOCUMENT_ROOT"].

Ergo:

Code: Alles auswählen

<?php 
pruefen_ob_a_b_c_und_d_sich_im_bereich_gueltiger_werte_befinden_oder_irgendein_boeser_bube_unfug_zu_versuchen_treibt&#40;&#41;;
if &#40;ist_zieldatei_vorhanden&#40;&#41;&#41; &#123;
   include $_SERVER&#91;"DOCUMENT_ROOT"&#93; . 'secure/include/titel/' . $a . '-' . $b . '/' . $c . '-' . $d . '.php';?>
&#125;
else &#123;
    fehler_da_ziel_nicht_vorhanden&#40;&#41;
&#125;
\

Re: PHP. Include Variabler dateinamen

Verfasst: 18.04.2010, 15:03
von heino
Mork vom Ork hat geschrieben:
Tracker hat geschrieben:Ich würde gerne Dateien in eine Seite per include laden. Welche datei es sein soll, soll mittel variabler übergeben werden. Also domain.de/?a=x&b=y&c=z&d=a
Oha. Du bist dir hoffentlich im Klaren darüber, dass du gerade bei solchen Aktionen den Inhalt der Parameter strikt prüfen musst.
Na ja. Er hat irgendwie eine düstere Ahnung. Aber nur sehr düster.
... 3. Was passiert wenn man die Url mit Variablen aufruf die keine "Bedutung" haben ? kann man das Irgendwie abfangen ?

Verfasst: 18.04.2010, 16:12
von Tracker
PHPSchmied hat geschrieben:Warum sollte er " nehmen wenn er den trick schon raus hat wie PHP schneller wird.
Wenn dann erkläre ihm das auch richtig und führe ihn nicht wieder auf ein schlechten Programmierstil.

Code: Alles auswählen

<?php 

$a = $_GET&#91;'a'&#93;;
$b = $_GET&#91;'b'&#93;;
$c = $_GET&#91;'c'&#93;;
$d = $_GET&#91;'d'&#93;;
$file =  '/secure/include/titel/'.$a.'-'.$b.'/'.$c.'-'.$d.'.php';

if &#40;file_exist&#40;$file&#41;&#41; &#123;
   include $file; 
&#125;

?>
funktioniert prima und auch das mit der else hab ich allein hinbekommen :)

Noch eine kurze frage.

Ich kann funktionen ja in eine INC packen. diesen includen und dann die einzelnen funktionen aufrufen.

Funzt das auch mit HTML elementen.

Also mit z.B. Metas, Body ?

Verfasst: 18.04.2010, 21:30
von Hasenhuf
PHPSchmied hat geschrieben:Warum sollte er " nehmen wenn er den trick schon raus hat wie PHP schneller wird.
Wenn dann erkläre ihm das auch richtig und führe ihn nicht wieder auf ein schlechten Programmierstil.

Code: Alles auswählen

<?php 

$a = $_GET&#91;'a'&#93;;
$b = $_GET&#91;'b'&#93;;
$c = $_GET&#91;'c'&#93;;
$d = $_GET&#91;'d'&#93;;

?>
Völlig sinnloses Umkopieren von Variablen ist also guter Programmierstil?
Tracker hat geschrieben: Noch eine kurze frage.

Ich kann funktionen ja in eine INC packen. diesen includen und dann die einzelnen funktionen aufrufen.

Funzt das auch mit HTML elementen.

Also mit z.B. Metas, Body ?
Eine Gegenfrage, warum findest Du es nicht heraus?

Verfasst: 19.04.2010, 10:25
von Tracker
Hasenhuf hat geschrieben: Eine Gegenfrage, warum findest Du es nicht heraus?

OK...hat auch jemand nen Tipp oder nen Link zur selbsthilfe

Verfasst: 19.04.2010, 11:01
von SloMo
PHPSchmied hat geschrieben:Warum sollte er " nehmen wenn er den trick schon raus hat wie PHP schneller wird.
In diesem Fall würde ich Lesbarkeit wesentlich wichtiger einschätzen, als einen zusätzlichen Prozentpunkt Geschwindigkeit einer einmalig ausgeführten Code-Zeile.

Ansonsten würde ich empfehlen, die ganze Site per C-Code erzeugen zu lassen. Scheiß auf PHP wenn es um Performance geht! ;)

Verfasst: 20.04.2010, 14:29
von Hasenhuf
Tracker hat geschrieben:
Hasenhuf hat geschrieben: Eine Gegenfrage, warum findest Du es nicht heraus?

OK...hat auch jemand nen Tipp oder nen Link zur selbsthilfe
Ich dachte an ausprobieren, schließlich verwendest Du den Befehl schon und solltest wissen was er macht. Wenn Du weiß welche Bedingungen erfüllt sein müssen, wenn Du PHP-Code ausführbar einbinden willst, dann sollte auch klar sein, was passiert, wenn die Bedingungen dafür nicht erfüllt sind.

Ansonsten, RTFM oder ein Tutorial.
https://de.php.net/manual/de/function.include.php
https://tut.php-q.net/de/

Verfasst: 23.04.2010, 12:43
von Tracker
Da es ja mitlerweile um ein neues thema geht

https://www.abakus-internet-marketing.d ... tml#702110

Verfasst: 23.04.2010, 12:48
von nerd
hallo? includes und requires werden doch eingebunden BEVOR irgendwelcher php-code ausgefuehrt wird!

Verfasst: 23.04.2010, 14:03
von DanielS
nerd hat geschrieben:includes und requires werden doch eingebunden BEVOR irgendwelcher php-code ausgefuehrt wird!
Ich weiß zwar nicht, auf was für einen Code Du Dich beziehst, aber so wie die Aussage da steht, stimmt das nicht.

Verfasst: 23.04.2010, 15:29
von nerd
hu? gerade ausprobiert, seit wann funktioniert das denn? hatte das mal in so einem dicken php buch gelesen. sah von aussen jedenfalls voll legit aus und war auch richtig teuer...