am verzweifeln...echo / variable
jens65m
- php
folgendes Problem:
ich habe eine Variable die ihren Wert durch eine Funktion bekommt.
function example($x, $y)
{
if($_GET["bla"])
{
return $_GET["bla"];
}
}
$var = example($x, $y);
gebe ich nun $var aus erscheint der wert den ich gerne haben möchte.
versuche ich diesen wert in verbindung mit require_once zu verwenden
require_one(/pfad/".$var."/zur/datei.php);
funktioniert das nicht.
Der Fehler der ausgegeben wird:
No such file or directory (/pfad//zur/datei.php);
das merkwürdige ist, dass ich den richtigen wert durch
echo $var
ausgeben kann.
setze ich $var manuelle vor require_once:
$var = "value";
require_one(/pfad/".$var."/zur/datei.php);
wird die datei "/pfad/value/zur/datei.php" verwendet!?
lg
im übrigen erhalte ich auch ein notice: Undefined index: bla
ist gesetzt !
Hallo,
naja du nutzt ja garnicht $x und $y. außerdem stehen da zwei slashes. da kann was nicht stimmen. undefined index wäre zB. wenn $_GET["bla"] nicht existiert.
Der Fehler der ausgegeben wird:
No such file or directory (/pfad//zur/datei.php);
^^
Gruß
jobo
mal von $x und $y abgesehen, die ich aus dem beispiel hätte rausnehmen sollen da sie nichts zur sachen tun.
Wie bereits gesagt
$_GET["bla"] existiert.
Ich erhalte:
echo $_GET["bla"]
Ergebnis: "value"
require("/pfad/".$_GET["bla"]."/zur/datei.php")
=> Datei (/pfad//zur/datei.php); kann nicht gefunden werden anstatt dass die Datei
"/pfad/value/zur/datei.php" verwendet wird.
daher auch der doppelslash, weil er die variable nicht einsetzt.
require_one(/pfad/".$var."/zur/datei.php);
Das erzeugt mit Sicherheit einen fatalen Fehler. Schau dir die Anführungszeichen nochmal an.
Dein Notice liegt vermutlich daran, dass du den Wert nicht übergist. Du prüfst auch nicht, ob er existiert sondern oder gefüllt ist. Du willst die die Doku zu isset() durchlesen.
ich setz den wert im moment selbst und hab isset rausgenommen.
Den Wert $_GET["bla"] habe ich selbst in die adresszeile eingeben. er existiert in diesem test definitiv.
ich setz den wert im moment selbst und hab isset rausgenommen.
Den Wert $_GET["bla"] habe ich selbst in die adresszeile eingeben. er existiert in diesem test definitiv.
Wieso sagst du denn nicht, dass du keine Hilfe willst? Denn wenn du die wolltest, würdest du den tatsächlichen Code posten und keine Bruchstücke, bei denen relevante Teile fehlen.
ums nochmal genau darzustellen:
Meine Adressleiste:
"http://localhost/unterordner/index.php/option/?bla=ausgabewert"
Meine index.php:
function example()
{
return $_GET["bla"];
}
$var = example();
echo $var;
//Erzeugt: "ausgabewert"
require("pfad/".$var."/zur/datei.php");
//Erzeugt Fehler weil Datei ("pfad//zur/datei.php) nicht gefunden.
//=> setzt variable nicht ein
lg
@@jens65m:
nuqneH
"http://localhost/unterordner/index.php/option/?bla=ausgabewert"
[…]
//Erzeugt: "ausgabewert"
Und "http://localhost/unterordner/index.php/option/?bla=<script>alert(42)</script>" erzeugt was?
Denke daran, alle Nutzereingaben vor der Ausgabe zu behandeln (zumindest mit htmlspecialchars()), um keine Sicherheitslücken (XSS) aufzureißen!
Qapla'
Hi!
Und "http://localhost/unterordner/index.php/option/?bla=<script>alert(42)</script>" erzeugt was?
Falscher Kontext. Der übergebene Wert soll in einen Dateipfad eingefügt werden.
Denke daran, alle Nutzereingaben vor der Ausgabe zu behandeln (zumindest mit htmlspecialchars()), um keine Sicherheitslücken (XSS) aufzureißen!
Keine Ausgabe, nix mit XSS - andere Baustelle - anderes Gefährdungspotential.
Lo!
http://localhost/unterordner/index.php/option/?bla=ausgabewert
^^^^^^^^
damit hängts wohl zusammen.
für ich das ganze so aus
http://localhost/unterordner/index.php?bla=ausgabewert
funktionierts.
Aber warum?!