Problem mit Maskierung von verschachtelten Querystrings
Enrico
- php
Hallo,
programmiertechnisch bedingt übergebe ich alle notwendigen Variablen innerhalb der Variable $Parameter, um diese Variable dann zentral auszuwerten.
Kein Problem habe ich mit der Auswertung von folgendermassen aufgebauten Query-Strings innerhalb einer HTML-Datei:
<a href="Seitenaufbau.php?Parameter='Register_Nr=2'" ...>Link</a>
Da mein Gästebuch aber aus nur einer Datei besteht, somit über Selbstaufrufe abläuft und ich die Navigation über einzelne Variablen ausgebe, muss ich diese Aufrufe auch berücksichtigen und das scheitert schon an der korrekten Maskierung des Query-Strings:
$Link_Letzte_Seite = '<a href="Seitenaufbau.php?Parameter="Register_Nr=2&Seite='Gaestebuch.php?page=' . $Anzahl_Seiten . ''"" ...>Letzte_Seite</a>';
Wie muss ich diese Variablen korrekt maskieren ?
Vielen Dank im voraus.
Gruss, Enrico
hi,
programmiertechnisch bedingt übergebe ich alle notwendigen Variablen innerhalb der Variable $Parameter, um diese Variable dann zentral auszuwerten.
das klingt aber nach einem vermurksten konzept ...
$Link_Letzte_Seite = '<a href="Seitenaufbau.php?Parameter="Register_Nr=2&Seite='Gaestebuch.php?page=' . $Anzahl_Seiten . ''"" ...>Letzte_Seite</a>';
Wie muss ich diese Variablen korrekt maskieren ?
vor allem mal musst du sonderzeichen wie " und = erst mal URL-gerecht kodieren. url_encode() hilft.
trotzdem halte ich das konzept für äußerst fragwürdig.
gruß,
wahsaga
Hallo Wahsaga,
das klingt aber nach einem vermurksten konzept ...
Der aktuelle Stand der Auswertung sieht folgendermassen aus:
$Array_Seiten = array ("Neuigkeiten.html", "Ueber_mich.html", ...);
$Parameter = str_replace ("'", "", $_GET ["Parameter"]);
if ((! isset ($Parameter)) or (trim ($Parameter) == ""))
{
$Register_Nr = 0;
$Seite = "Neuigkeiten.html";
}
else
{
parse_str ($Parameter, $Wert);
if (trim ($Wert ['Register_Nr']) <> "")
...
}
Und nun geht es darum, dass ich feststellen kann, ob das Array-Element $Wert ['Seite'] einen Inhalt besitzt, um dann die Seite direkt aufzurufen, wie es bei meinem Gästebuch der Fall sein wird, oder ob ich die aufzurufende Seite über das Array-Element $Array_Seiten [$Wert ['Register_Nr']] festlege.
url_encode() hilft
Deshalb hatte ich ja nach der korrekten Maskierung des umfangreichen Strings gefragt :-)
Gruss, Enrico
Hello,
mal so generell:
Du kannst doch über die URL, so es denn unbedingt sein muss, ganz viele Paramter ('soviel Du willst' mag ich nicht behaupten) übergeben. Wie Du die dann im Script wieder zusammenbaust und hierarchisierst, ist doch Dir überlassen.
Vom Innenleben des Scriptes und seiner Logik würde ich jedenfalls den User so wenig wie möglich sehen lassen. Das erhöht die Betriebssicherheit.
Außerdem sollten i der URL nur Parameter übergeben werden, die für ein Bookmarking relevant sein könnten, oder das Script für externe (freeware) Nutzung brauchbar machen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
schön und gut :-)
Was schlägst Du vor ?
Wie würdest Du mein Vorhaben umsetzen ?
Enrico
Sodalla, jetzt habe ich mein Problem fast gelöst.
Die Maskierung bin ich mit schrittweiser Zusammensetzung ds Links umgangen:
$Seite = "Gaestebuch.php?page=1";
$Parameter = "Register_Nr=3&Seite=$Seite";
$Link = "Seitenaufbau.php?Parameter='$Parameter'";
$Link_Erste_Seite = '<a href="' . $Link . '" ...>Letzte Seite</a>';
Die Auswertung sieht folgendermasen aus:
$Array_Seiten = array ("Neuigkeiten.html", "Ueber_mich.html", ...);
$Parameter = str_replace ("'", "", $_GET ["Parameter"]);
if ((! isset ($Parameter)) or (trim ($Parameter) == ""))
{
$Register_Nr = 0;
$Anzuzeigende_Seite = "Neuigkeiten.html";
}
else
{
parse_str ($Parameter, $Wert);
if (trim ($Wert ['Register_Nr']) <> "")
{
if (trim ($Wert ['Seite']) <> "")
$Anzuzeigende_Seite = $Seite;
else
$Anzuzeigende_Seite = $Array_Seiten [$Wert ['Register_Nr']];
}
}
Die Auswertung der Register_Nr klappt, jedoch wird der Wert "Seite" scheinbar ignoriert.
Was stimmt noch nicht?
Gruss, Enrico
hi,
Die Maskierung bin ich mit schrittweiser Zusammensetzung ds Links umgangen:
$Seite = "Gaestebuch.php?page=1";
$Parameter = "Register_Nr=3&Seite=$Seite";
$Link = "Seitenaufbau.php?Parameter='$Parameter'";
$Link_Erste_Seite = '<a href="' . $Link . '" ...>Letzte Seite</a>';
das sollte dann den URL
Seitenaufbau.php?Parameter='Register_Nr=3&Seite=Gaestebuch.php?page=1'
ergeben, wenn ich mich nicht vertan habe.
korrekt maskiert ist der aber natürlich immer noch nicht.
Die Auswertung sieht folgendermasen aus:
gibt's irgendeine nachvollziehbare erklärung für diesen aufwand?
warum benutzt du nicht einen URL in der form
Seitenaufbau.php?Register_Nr=3&Seite=Gaestebuch.php&page=1
und greifst dann über $_GET auf die einzelnen parameter Register_Nr, Seite und page zu?
gruß,
wahsaga