PHP include $var
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abholen
anweisung
array
befehl
code
datei
element
enden
endlosschleife
gefahr
glauben
quellcode
sagen
schabernack
schleife
test
treffen
treiben
vergleichen
-
Aloha,
ich bin erst vor kurzem hier her umgezogen und komischerweise funktioniert seither mein schönes PHP-Templating nicht mehr. Includen geht, doch sobald ich das mit Variablen lösen möchte, bleibts leer. Im Klartext:
<?php if($site=="") { $site="news"; } include("$site.php"); } ?>
Die Variable wir dann gesetzt, indem ich z.B. auf "main.php?site=links" verweise.
Wo ist das Problem? Wieso wird die Variable durch den Link nicht definiert (echo $site ist leer)?
Wahrscheinlich liegts an einem einzigen Zeichen, aber ich sehe es gerade nicht; ist auch schon eine Weile her, seit ich das geschrieben habe ^_^ HILFEE und Danke! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Bei Lima werden soweit ich weiß (ich benutze den Webspace nicht),
kein Getvariablen zu Variablen umgeschrieben.
Es fehlt einfach ein:
$site = $_GET["site"];
vor der if. -
Das iste eine geschweifte Klammer zu viel drin müsste dann so aussehen:
<?php if($site=="") { $site="news"; } include("$site.php"); ?>
Beschreibe aber ncohmal dein Problem genauer!
Gruß S.Brosch
Beitrag zuletzt geändert: 18.3.2011 12:27:43 von software-brosch -
@brosch: Klar, danke. Ist mir zum Glück nur bei der Übertragung untergekommen ^_^
@sneppa: Super, das wars! Vielen Dank :D -
Ach und nochwas:
Bitte validiere vorher, was in der Variable site steht!
am besten ein Array mit den erlaubten Seiten erstellen und mit in_array() prüfen ob $site enthalten ist,
ansonsten werden Cracker deine Seite lieben :) -
if($site=="") { $site="news"; } include("$site.php");
muss das nicht anders heißen??
die variable $site.php gibt es nicht...
<?php if($site=="") { $site="news"; } include("".$site.".php"); ?>
probier das mal aus...
und in der If-Anweisung fürde ich so prüfen
if(empty($_GET['site'])...
wenn site eine Getvariable ist... ich glaube nämlich auch , dass Lima Global_Registers aus hat -
Oh, ich hatte schonmal von der Gefahr gehört. Aber erlaubt mein Quellcode nicht sowieso nur Dateien, die auf .php enden, und somit kann man nur mit den vorhandenen PHP-Dateien Schabernack treiben?
Ich werde aber auf jeden Fall die Vorkehrung treffen, schon alleine, um die Möglichkeit auszuschließen, dass mit dem include-Befehl die aufrufende Datei integriert wird. Ein Test resultierte gerade in einer.... naja, sagen wir ENDLOSschleife ^_^
Also einfach ein Array mit den möglichen Werten initialisieren und die Variable mit den Einträgen vergleichen? Hätte das jetzt mit einer While-Schleife gemacht, aber gibts nicht eine Abfrage wie "if (x Element von y[])"?
@technofan: zum 1.: Nein, wenn ich Anführungszeichen mache, dann wird auch der Code innendrin compiliert und die Variable durch ihren Wert ersetzt ;)
Deine if-Anweisung sieht schön aus, nur, wenn ich später der Variable den Wert über $_GET zuweisen möchte, geht das zweimal? Oder kann ich den Wert nur einmal "abholen"? -
technofan schrieb:
muss das nicht anders heißen??
die variable $site.php gibt es nicht...
PHP interpretiert die Variable $site nicht $seite.php; Variablen mit Punkten gibt es nicht, bzw. sollte es nicht geben ;)
technofan schrieb:
wenn site eine Getvariable ist... ich glaube nämlich auch , dass Lima Global_Registers aus hat
richtig.
rupan schrieb ja schon das es funktioniert
rupan schrieb:
Oh, ich hatte schonmal von der Gefahr gehört. Aber erlaubt mein Quellcode nicht sowieso nur Dateien, die auf .php enden, und somit kann man nur mit den vorhandenen PHP-Dateien Schabernack treiben?
Nein, es kann auch umgangen werden
rupan schrieb:
Ich werde aber auf jeden Fall die Vorkehrung treffen, schon alleine, um die Möglichkeit auszuschließen, dass mit dem include-Befehl die aufrufende Datei integriert wird. Ein Test resultierte gerade in einer.... naja, sagen wir ENDLOSschleife ^_^
Also einfach ein Array mit den möglichen Werten initialisieren und die Variable mit den Einträgen vergleichen? Hätte das jetzt mit einer While-Schleife gemacht, aber gibts nicht eine Abfrage wie "if (x Element von y[])"?
wie ich bereits schrieb:
sneppa schrieb:
und mit in_array() prüfen ob $site enthalten ist
rupan schrieb:
@technofan: zum 1.: [...]
Deine if-Anweisung sieht schön aus, nur, wenn ich später der Variable den Wert über $_GET zuweisen möchte, geht das zweimal? Oder kann ich den Wert nur einmal "abholen"?
$_GET ist eine ganz normale Variable und kann normal genutzt werden.
Ich würde aber dazu raten, die Variable in $site zu schreiben, IMHO die schönere und übersichtlichere Variante.
Beitrag zuletzt geändert: 18.3.2011 12:56:33 von sneppa -
die Getvariable ist im text eine ganz normale Variable wie $site auch, du kannst den Wert so oft abholen wie du willst bis du ihn überschreibst. Man kann Getvariablen also auch so füllen $_GET['blah'] = "test";
also ganz normal... und zur Sache mit dem beliebigen einbinden einer Datei... prüf noch mit if(file_exist("Datei")) ob die Datei auch vorhanden ist, das bringt wieder etwas Sicherheit. -
@ rupan
<?php
if($site=="") {
$site="news";
include($site.".php");
}
?>
so wärs dann richtig^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage