Frage zum Querystring
Tom1tk
- php
0 Daniel0 Bambel0 Tom1tk0 Tobias Kloth0 Tom1tk
Guten Abend,
gibt es eine Möglich kein Daten an einen Querystring anzuhängen, wobei ich nicht so recht weiß, ob bereits ein Querystring existiert.
Folgendes Problem meine ich:
ich verweise auf Seiten z.b seite.php?site=xy
und da möchte ich diverse Daten anhängen durch .$daten Diese daten sehen so aus: &daten=blabla&text=xhsze
Wenn jetzt aber die Seite nicht mehr mit ?site=xy endet sondern mit .php hab ich ein Problem:
Dann steht bla.php&daten=kjdbrfkgs dran...
Lösung?
Danke Tom1tk
Guten Abend,
zuerst abfragen, wie der QueryString aussieht. Ist er leer, hängst du die Parameter mit vorangestelltem ? an, sonst halt mit &
Gruss,
Daniel
Hallo!
zuerst abfragen, wie der QueryString aussieht. Ist er leer, hängst du die Parameter mit vorangestelltem ? an, sonst halt mit &
oder die unsaubere aber ebenso funktionale Lösung:
Häng an die URL als erstes IMMER ein ?d=d an, also irgendwas möglichst kurzes was du sowieso nicht benötigst. Dann steht weiter hinten in jedem Skript immer was dran und du kannst pauschal mit & anhängen.
MfG
Rouven
Hi,
Häng an die URL als erstes IMMER ein ?d=d an, also irgendwas möglichst kurzes was du sowieso nicht benötigst. Dann steht weiter hinten in jedem Skript immer was dran und du kannst pauschal mit & anhängen.
Das ist ja grad das Problem. Ich hab eine "Diese Seite als Startseite im Account festlegen"-Funktion, die auf die Request-Uri zurückgreift und eben diese URI ist normalerweise "seite.php?site=Diese_Seite&käse=hdfj" und da dran hänge ich noch diverse Sachen an. ABER: Meine Suchmaschine listet Teilweise auch direkt die Datei Diese_Seite.php und wenn ich dann was mit &bla=hfjf anhänge gibt es Probleme.
Gibt es keine Funktion in php, die mir aus einem String alle & und ? rausschmeißt, und dann alles als Querystring mit ? .. &...& anhängt??
Greets Tom1tk
hi,
Gibt es keine Funktion in php, die mir aus einem String alle & und ? rausschmeißt, und dann alles als Querystring mit ? .. &...& anhängt??
warum fragst du denn nicht einfach die anzahl von ? und & im querystring ab, und reagierst entsprechend ...?
gruss,
wahsaga
Halloa,
warum fragst du denn nicht einfach die anzahl von ? und & im querystring ab, und reagierst entsprechend ...?
Tja, das ist gerade das Problem. Meine Seiten sind fast fertig und dieses Problem ist mir erst jetzt aufgefallen, als ich (nicht via Menü, sondern durch direkte Eingabe des URI) auf meine Seiten gegangen bin.
Mein web ist so aufgebaut:
ordner1
datei1.php
datei2.php
index.php
In der Index.php setht nur ne Abfrage:
sinngemäß:
if ($site!"")include $site.".php";
Und meine komplette Menüstruktur basiert auf diesem System: /ordner1/?site=xyz&subsite=abc
Aber: Man kann die Seiten auch direkt ansteuern durch z.B. meine Suchmaschine, die direkt die php Seiten durchsucht und diese dann indiziert...
Sch.....
Egal. Ich sehe schon, dass ich da alle mein Links umbauen werde und mit ner Abfrage aus "? &" ausstatten werde.
Greets und Danke
Tom1tk
Hallo Tom1tk,
gibt es eine Möglich kein Daten an einen Querystring anzuhängen,
nein. Mache das über $_POST, also <form method="post"> und dann <input type="file">, und dort wählt der User dann (s)eine Datei aus.
wobei ich nicht so recht weiß, ob bereits ein Querystring existiert.
Query-string => $_SERVER["QUERY_STRING"], zu deiner information. Und dann ist der Querystring bei apache "", also leerer string, wenn keiner da ist, also dateiname.php da steht, und wenn was da ist (dateiname.php?osdgkuwp34o5iu...), dann eben "lksdgflwk...", IIS macht bei nicht-existierendem-query-string einfach nicht-existierendes array-teil, also $_SERVER["QUERY_STRING"] existiert beim IIS dann nicht. Auf der sicheren Seite stehst du also, wenn du checken willst, ob ein query-string mitgechickt wurde oder nicht mit
if(isset($_SERVER["QUERY_STRING"]) && !empty($_SERVER["QUERY_STRING"]))
print "query-string ist da ! Wert: ".$_SERVER["QUERY_STRING"];
else
print "gibt keinen query-string (*heul* ;-))";
Folgendes Problem meine ich:
ich verweise auf Seiten z.b seite.php?site=xy
wie wunderschön. Doch hier brauchst du keinen Query_string, sondern $_GET. und zwar $_GET["site"], also
if(isset($_GET["site"])
print "blabla existiert";
naja, auch egal.
und da möchte ich diverse Daten anhängen durch .$daten Diese daten sehen so aus: &daten=blabla&text=xhsze
und wo sind hier deine Daten ? ocet-streams und so was ? Auf jeden fall sind das keine Dateien, sondern Daten (ach du hast ja daten geschrieben). Na super.
Wenn jetzt aber die Seite nicht mehr mit ?site=xy endet sondern mit .php hab ich ein Problem:
häää was ?
Dann steht bla.php&daten=kjdbrfkgs dran...
und ? wo ist das problem ? Ich raff net was du willst.
Seiten enden für gewöhnlich nicht mit einer Extension, die ein ? beinhaltet, weil man das sowieso nicht in einen dateinamen reinbringen darf...
danke :-/
Hannes Bambel
Hi,
Genau das wollte ich wissen:
if(isset($_SERVER["QUERY_STRING"]) && !empty($_SERVER["QUERY_STRING"]))
print "query-string ist da ! Wert: ".$_SERVER["QUERY_STRING"];
else
print "gibt keinen query-string (*heul* ;-))";
if(isset($_GET["site"])
Warum eigentlich mit $_GET? Geht nicht $site auch?
Greets Tom1tk
Hallo Tom1tk,
if(isset($_GET["site"])
Warum eigentlich mit $_GET? Geht nicht $site auch?
Theoretisch, ja - praktisch ist davon aber abzuraten, da es nur bei register_globals=on funktioniert - und diese Einstellung steht seit php 4.2(?) standardmäßig auf off (warum das gut ist, siehe Archiv).
Grüße aus Nürnberg
Tobias
Hallöli!
Theoretisch, ja - praktisch ist davon aber abzuraten, da es nur bei register_globals=on funktioniert - und diese Einstellung steht seit php 4.2(?) standardmäßig auf off (warum das gut ist, siehe Archiv).
Bei mir (Version 4.2.3) stehen alle Vars auch so zur Verfügung... Ich hab aber von Server-Konfiguration keine Ahnung.
Greets Tom
Hallo Tom,
Bei mir (Version 4.2.3) stehen alle Vars auch so zur Verfügung... Ich hab aber von Server-Konfiguration keine Ahnung.
Ich würde dir auf jeden fall raten, dir mal PHP 4.3.3 runterzuladen (http://www.php.net), denn heutzutage greift man auf Cookies, Get & Post-variablen per $_COOKIE, $_GET & $_POST zu.
Kleines Beispiel: Du handelst während deines scriptes mit variablen wie x, y etc. Dein böser besucher muss nur deineseite.php?x=3000&y=blabla
eingeben und kann damit schon massiv dein script manipulieren - in wie fern, das hängt natürlich von ihm ab.
Sir bambel