javanoob: $_GET Variable

Guten Morgen,

wie kann man ohne Session einen Wert in einem Pop-Up Fenster dauerhaft speichern?
Den Wert übergebe ich über den Pop-Up Link:
http://beispiel.teportal-de.beispiel.com/popup.php?id=75  <--

$url = $_GET["id"];

Wenn ich auf den Wert der Variable zugreifen möchte, nach dem ich einen Button klicke, ist der Wert weg.

Danke im Vorraus

  1. Tach!

    wie kann man ohne Session einen Wert in einem Pop-Up Fenster dauerhaft speichern?

    HTTP kennt kein dauerhaft. Deswegen musst du ja zu solchen Hilfsmitteln wie Session oder Cookies greifen.

    Den Wert übergebe ich über den Pop-Up Link:
    http://beispiel.teportal-de.beispiel.com/popup.php?id=75  <--

    Die Beispiel-Domains heißen unter anderem example.com und es gibt keine lokalen oder anderssprachigen Varianten davon. Die Domain beispiel.com gehört einer Firma, auch wenn sie ungenutzt aussieht.

    $url = $_GET["id"];

    Und warum verwendest du ihn nicht direkt $_GET["id"] sondern kopierst den Wert nochmal in eine andere Variable um?

    Wenn ich auf den Wert der Variable zugreifen möchte, nach dem ich einen Button klicke, ist der Wert weg.

    Ja, neuer Request, neues Glück. Wenn du was vom alten in den neuen Request übergeben willst, musst du dem auslösenden Vorgang (zum Beispiel Link oder Formular) diesen Wert mitgeben - oder eine der genannten übergreifenden Speichermethoden wählen.

    dedlfix.

    1. Hallo

      Die Beispiel-Domains heißen unter anderem example.com und es gibt keine lokalen oder anderssprachigen Varianten davon. Die Domain beispiel.com gehört einer Firma, auch wenn sie ungenutzt aussieht.

      Bitte nur mit dem Problem befassen, wenn Ihr mir helfen wollt.
      Trotzdem sehr hilfreich, wollte wissen ob man Session übergehen kann! Danke..

      1. Hallo

        Die Beispiel-Domains heißen unter anderem example.com und es gibt keine lokalen oder anderssprachigen Varianten davon. Die Domain beispiel.com gehört einer Firma, auch wenn sie ungenutzt aussieht.

        Bitte nur mit dem Problem befassen, wenn Ihr mir helfen wollt.

        Manche Leute wissen gar nicht, dass sie ein Problem haben. Darf man denen nicht helfen?

        Gruß
        Kalk

      2. Moin!

        Bitte nur mit dem Problem befassen, wenn Ihr mir helfen wollt.
        Trotzdem sehr hilfreich, wollte wissen ob man Session übergehen kann! Danke..

        Hat er doch. Ich zitiere:

        Wenn ich auf den Wert der Variable zugreifen möchte, nach dem ich einen Button klicke, ist der Wert weg.

        Ja, neuer Request, neues Glück. Wenn du was vom alten in den neuen Request übergeben willst, musst du dem auslösenden Vorgang (zum Beispiel Link oder Formular) diesen Wert mitgeben - oder eine der genannten übergreifenden Speichermethoden wählen.

        Der Rest war freundliche Dreingabe.

        --
        Signaturen sind blöd!
  2. wie kann man ohne Session einen Wert in einem Pop-Up Fenster dauerhaft speichern?

    Warum keine Sessions?
    Ein Pop-Up Fenster wird genau wie jedes gewöhnliche Fenster behandelt. Einziger Unterschied: es nervt.

    Wenn ich auf den Wert der Variable zugreifen möchte, nach dem ich einen Button klicke, ist der Wert weg.

    Das ist auch logisch, wenn du ein Formular absendest wird eine neue Anfrage an den Server gestellt.

    Du könntest die Variablen immer wieder durchreichen:

    <form action="foobar.php?<?php echo $_GET['id']; ?>">

    Schön ist allerdings anders.

    1. <form action="foobar.php?<?php echo $_GET['id']; ?>">

      Sollte natürlich:
      <form action="foobar.php?id=<?php echo $_GET['id']; ?>">
      heißen.

      Beachte, dass du das für jede Art von Auslösern machen musst, wie dedlfix schon schrieb.

    2. ich danke dir! Sehr hilfreich

    3. <form action="foobar.php?<?php echo $_GET['id']; ?>">

      Kontextwechsel? Du enttäuscht mich.

      1. <form action="foobar.php?<?php echo $_GET['id']; ?>">

        Kontextwechsel? Du enttäuscht mich.

        Schande über mich.

        <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

        1. <form action="foobar.php?<?php echo $_GET['id']; ?>">

          Kontextwechsel? Du enttäuscht mich.

          Schande über mich.

          <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

          Die Schande wird immmer größer :)

          1. <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

            Die Schande wird immmer größer :)

            Zappalott! Hilf mir bitte schnell auf die Sprünge bevor ich mich weiter blamiere, ich bin kein guter PHP-Prgammierer.

            1. Okay, @rawurlencode ist die saubere Variante.

              Hier würde sich ein Abschnitt darüber ganz gut machen. Ich könnte eine Rohfassung schreiben, aber bei meinem bescheidenen PHP-Wortschatz müsste das wohl jemand gegenlesen.

              1. Okay, @rawurlencode ist die saubere Variante.

                Für den Kontextwechsel von "beliebige Zeichenkette nach URL", vielleicht - aber nicht von "URL nach HTML" :)

                1. Für den Kontextwechsel von "beliebige Zeichenkette nach URL", vielleicht - aber nicht von "URL nach HTML" :)

                  Ich merk schon, das Thema verdient nochmal meine Aufmerksamkeit.
                  Den Wiki-Abschnitt gibts es übrigens auch schon. Ich glaub ich brauch ne Kanne Kaffee.

                2. Hi,

                  Für den Kontextwechsel von "beliebige Zeichenkette nach URL", vielleicht - aber nicht von "URL nach HTML" :)

                  Das verstehe ich nicht.

                  Um bei diesem konkretem Beispiel zu bleiben:
                  <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

                  Was muss man da jetzt übergeben damit irgendwas kaputt geht?

                  ~dave

                  1. Um bei diesem konkretem Beispiel zu bleiben:
                    <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

                    Was muss man da jetzt übergeben damit irgendwas kaputt geht?

                    In diesem spezielle Fall nichts, da alle für HTML markupspezifischen Zeichen ohnehin kodiert werden und das Ergebnis keine entsprechenden Zeichen mehr enthalten kann, da das Resultat immer aus %-Zeichen, Dezimalziffern und ggf. +-Zeichen besteht.

                    Das ist eine Fall-zu-Fall-Entscheidung - mir ging es jetzt eher darum, vollständig aufzuführen, welche Kontextwechsel hier überhaupt stattfinden - dass einer dieser in diesem speziellen Fall keiner besonderen behandlung bedarf, heißt aber nicht, dass er nicht da ist.

                    Eine andere Möglichkeit wäre z.B. ein simples intval() um die ID - das wird im Zweifel dann zu 0 gecastet (bzw. so einer Ganzzahl wobei der rest abgeschnitten wird).

                    1. Hi,

                      Das ist eine Fall-zu-Fall-Entscheidung - mir ging es jetzt eher darum, vollständig aufzuführen, welche Kontextwechsel hier überhaupt stattfinden - dass einer dieser in diesem speziellen Fall keiner besonderen behandlung bedarf, heißt aber nicht, dass er nicht da ist.

                      Ich fand deine Postings in diesem Fall sehr verwirrend. Sie machten auf mich den Eindruck, durch 1UnitedPowers Code entstehe Sicherheitslücke, was nicht der Fall ist.

                      IMHO hättest du einfach gleich sagen sollen, dass das in diesem Fall zwar egal ist, man aber immer auch noch den Kontext-wechsel zu HTML im Kopf behalten sollte.
                      Hätte 1UnitedPower und mir das rumraten gespart :-)

                      ~dave

                      1. Abgesehen von deinem ersten. Das war wichtig, richtig und eindeutig.

                        1. Um nochmal den OP zu zitieren:

                          Bitte nur mit dem Problem befassen, wenn Ihr mir helfen wollt.

                      2. Ich fand deine Postings in diesem Fall sehr verwirrend. Sie machten auf mich den Eindruck, durch 1UnitedPowers Code entstehe Sicherheitslücke, was nicht der Fall ist.

                        Naja, es hat mich zumindest veranlasst nochmal einen Blick über die Materie schweifen zu lassen und dabei habe ich festgestellt, dass ich nochmal ein Update gebrauchen könnte.

                        Habe eben über einige ältere Websites gelesen, dass sie die Tilde (~) benutzen um Pfadangaben relativ zum Homeverzeichnis zu machen. Hier würde urlencode die Tilde maskieren und schon ist eine potenzielle Fehlerquelle entstanden. Zusätzlich bin ich auch schon über Seiten gestolpert, die die Tilde für Versionierungen von Dokumenten benutzen.

                        Immerhin war ich nicht der einzige, der sich hat verwirren lassen :)

                        1. Hi,

                          Habe eben über einige ältere Websites gelesen, dass sie die Tilde (~) benutzen um Pfadangaben relativ zum Homeverzeichnis zu machen. Hier würde urlencode die Tilde maskieren und schon ist eine potenzielle Fehlerquelle entstanden.

                          Das verstehe ich nicht.

                          Wenn ich als GET-Parameter "id" den Wert "<>';%~" übergebe wird aus
                          <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

                          <form action="foobar.php?id=%3C%3E%27%3B%25%7E">

                          Wo ist da jetzt ein Fehler entstanden?

                          Das gleiche "Problem" hätte man doch auch mit & als Parameter-Trennzeichen?
                          (Wenn es denn ein Problem wäre)

                          ~dave

                          1. Wenn ich als GET-Parameter "id" den Wert "<>';%~" übergebe wird aus
                            <form action="foobar.php?id=<?php echo urlencode($_GET['id']); ?>">

                            <form action="foobar.php?id=%3C%3E%27%3B%25%7E">

                            Wo ist da jetzt ein Fehler entstanden?

                            Die Tilde wurde maskiert, manche Websiten brauchen diese aber unmaskiert. rawurlencode kodiert diese deshalb nicht.

                            1. Hi,

                              Die Tilde wurde maskiert, manche Websiten brauchen diese aber unmaskiert. rawurlencode kodiert diese deshalb nicht.

                              Nun, wenn der Webserver entscheidet dass die Tilde eine besondere Bedeutung hat und nicht zum Parameter-Wert gehört landet die doch gar nicht erst in $_GET['id'].
                              Also doch kein Problem?

                              ~dave

                              1. Nun, wenn der Webserver entscheidet dass die Tilde eine besondere Bedeutung hat und nicht zum Parameter-Wert gehört landet die doch gar nicht erst in $_GET['id'].
                                Also doch kein Problem?

                                Hmm... Ich vermute es geht bei solchen Seiten nicht um Parameter-Kodierung, sondern um den url-path. Aber die URL-Kodierungs-Funktionen sind ja ohnehin für den Query-Teil bestimmt. Also vermutlich doch kein Problem.

                                http://example.com/foo/~bar

                                1. Aber die URL-Kodierungs-Funktionen sind ja ohnehin für den Query-Teil bestimmt.

                                  Weil wir grade dabei sind:
                                  http_build_query(array('id' => $_GET['id']))

                                  Hier manuell mit urlencode herumzufrickeln ist bei einem parameter noch ok, bei 2 oder mehr aber umständlich.

                                  1. Weil wir grade dabei sind:
                                    http_build_query(array('id' => $_GET['id']))

                                    Hier manuell mit urlencode herumzufrickeln ist bei einem parameter noch ok, bei 2 oder mehr aber umständlich.

                                    Dabnke für den Hinweis. Kannte ich bisher noch nicht.

              2. Om nah hoo pez nyeetz, 1UnitedPower!

                Hier würde sich ein Abschnitt darüber ganz gut machen. Ich könnte eine Rohfassung schreiben, aber bei meinem bescheidenen PHP-Wortschatz müsste das wohl jemand gegenlesen.

                Ich freue mich aufs Gegenlesen.

                Matthias

                --
                1/z ist kein Blatt Papier.

                1. Ich freue mich aufs Gegenlesen.

                  Nett dass du dich bereit erklärst, aber besagten Abschnitt gibt es schon. Hab ihn nur übersehen.

                  1. Nett dass du dich bereit erklärst, aber besagten Abschnitt gibt es schon. Hab ihn nur übersehen.

                    http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel/erkennen_und_behandeln#URL_in_HTML_.E2.80.93_zweifacher_Kontextwechsel

                    Hier sollte man ggf. auf http_build_query() hinweisen sprintf() ist hierfür etwas unhandlich.

                    1. Tach!

                      http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel/erkennen_und_behandeln#URL_in_HTML_.E2.80.93_zweifacher_Kontextwechsel
                      Hier sollte man ggf. auf http_build_query() hinweisen sprintf() ist hierfür etwas unhandlich.

                      Erledigt.

                      dedlfix.