Tom1tk: Frage zum Querystring

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

  1. Guten Abend,

    zuerst abfragen, wie der QueryString aussieht. Ist er leer, hängst du die Parameter mit vorangestelltem ? an, sonst halt mit &

    Gruss,
    Daniel

    1. 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

      --

      -------------------
      ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
      1. 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

        1. 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

          1. 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

  2. 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...

    Was willst du jetzt eigentlich wissen?

    danke :-/

    Hannes Bambel

    1. 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

      1. 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

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. 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

          1. 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