Variablen werden weggelassen... warum?

NRGyzer

Mitglied
Erstmal sorry für den Titel mir ist kein besserer eingefallen (dafür hab ich auch nix im Forum gefunden :( )... naja dafür wird den Thread ja warscheinlich eh fast niemand beachten.

Jedenfalls hab ich ein Problem. Ich habe eine index.php, welcher man über "?open=blabla.php" einer Seite übergeben kann, die dann Included wird. Also zB heißt die URL dann "http://........./index.php?open=blabla.php" und dann wird die blabla.php in die index.php included. Das funktioniert alles.

Jedoch wenn ich jetzt zB eine URL habe wie diese: "http://........./index.php?open=blabla.php?do=irgendwas", dann will ich dass die Datei "blabla.php?do=irgendwas" included wird und nicht nur einfach die "blabla.php". Also konkret: alles nach "blabla.php" wird weggelassen.

Noch was: die Variablen werden von einem Formular an die Datei "http://........./index.php?open=blabla.php" gesendet, bzw. übergeben... falls das was damit zu tun haben sollte.

Gibts eine Möglichkeit dass sowas irgendwie geht?
 
Öhm
1. ich hoffe für dich, dass du die Variable open vorher noch säuberst weil ansonsten kann man auch deine passwd etc includen und:
2. so gehts: "http://........./index.php?open=blabla.php&do=irgendwas"
beachte den & = und operator.
 
habs jetzt probiert, funktioniert aber leider nicht :( (Ausserdem kann ich dem Formular ja nicht sagen dass es ein "&" statt einem "?" dranhängen soll)

Gibts sonst noch ne Lösung?

ps.: Was meinst du mit "Variable open vorher säubern"?
 
Zuletzt bearbeitet:
Was meinst du damit: da das Formular die Daten anhängt?

Ich denke mal, dein Include-Befehl sieht in etwas so aus:
PHP:
include('./'.$_GET['open']);
Wenn ich jetzt index.php?open=../../datei eingebe, könnte ich jede beliebige Datei auf dem System includen (vorausgesetzt, du hast Leserechte für die Datei).
 
Ja, aber dieser Datei die included wird wieder was angehängt.

Also, der ganze Link lautet zB: "http://........./index.php?open=blabla.php?do=irgendwas"

Dann sollte in der index.php das included werden: "blabla.php?do=irgendwas"

Es wird aber nur "blabla.php" (also ohne die angehängten Werte)


Ich hoffe jetzt ist es verständlich.
 
HTML:
<form action ="./index.php" method="get">
<div>
<input type="hidden" name="open" value="blabla">
<input type="hidden" name="do" value="irgendwas">
<input type="submit">
</div>
</form>
Sollte automatisch beim Abschicken die richtige URI produzieren.
Wenn Du nur einen Link haben willst muss das so aussehen:
HTML:
<a href="./index.php?open=blabla&amp;do=irgendwas">Klick</a>
Man beachte im Link &amp; anstatt nur &. Nur so ist es ein valides HTML-Dokument, der Browser macht dann automatisch aus dem &amp; das &, wenn er es "in die Adressleiste schreibt". In der Adressleiste selbst schreibt man natürlich nur das &.
In beiden Fällen solltest Du so wie Oliver geschrieben hat, an die Werte rankommen.
Denkbar wäre auch folgendes, wobei ich schon Webserver gesehen habe, die damit nicht klarkommen:
HTML:
<form action ="./index.php?open=blabla" method="post">
<div>
<input type="hidden" name="do" value="irgendwas">
<input type="submit">
</div>
</form>
Allerdings must Du "do" dann nicht mit $_GET['do'] sondern mit $_POST['do'] ermitteln.
Du bindest nur Deine blabla.php ein, Du machst ja keinen neuen request, den macht nur der Browser des Users. In blabla.php sind dieselben Variablen verfügbar, wie auch in der index.php, also auch $_GET['do'].
Da hast Du etwas komplizierter gedacht, als es eigentlich ist ;)
Gruß hpvw
 
Zurück