Variablen aus URL extrahieren

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variablen aus URL extrahieren

    Hallo, ich bin mal wieder aufm holzweg.

    Also ich habe software die man online prüfen soll ob es ein update gibt oder nicht.

    Die software rugt eine seite auf und übergibt folgende 2 variablen:

    PHP Code:
    .../updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele 
    Jetzt dachte ich ich kann mir die 2 variablen schnappen, hab ich auch getan, aber das sieht nicht mehr lesbar aus:

    PHP Code:
    echo "<br />".$_GET['prg']; # Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00
    echo "<br />".$_GET['ber']; # Spiele 
    Jetzt hab ich schon mit urldecode und urlencode rumprobiert, aber das wird immer mehr unleserlicher :-(

    Wie kann ich diese dt. Umlaute und leerzeichen und alles schön zurückwandeln?
    Die 2 Variablen sollen klar lesbar sein. Ich weiß jetzt nicht was da für andere komische zeichen übertragen werden wenn die software zB auf einem russischen rechner läuft.
    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

  • #2
    Was kommt denn raus, wenn du urldecode() verwendest?

    Comment


    • #3
      Das erinnert mich an einen alten Schnipsel:
      PHP Code:
          private function __unicodeToUtf8($string) {
            
      $string str_replace('%C4''%C3%84'$string);
            
      $string str_replace('%D6''%C3%96'$string);
            
      $string str_replace('%DC''%C3%9C'$string);
            
      $string str_replace('%E4''%C3%A4'$string);
            
      $string str_replace('%F6''%C3%B6'$string);
            
      $string str_replace('%FC''%C3%BC'$string);
            return 
      $string;
          } 
      %C3%A4 entspricht %E4, %C3%B6 entspricht %F6 usw.

      Die Ein-Byte-Werte kannst du anschließend mit urldecode() weiterverwenden ... ob es eleganter geht, weiss ich nicht, die Funtion gammelt schon geraume Zeit hier rum und hofft auf Besserung. Ich wollte dir lediglich die Richtung zeigen. ach ja, u.U. musst du die Richtung ändern, bevor die Frage kommt.
      Die Zeit hat ihre Kinder längst gefressen

      Comment


      • #4
        Originally posted by RamonaS View Post
        Also ich habe software die man online prüfen soll ob es ein update gibt oder nicht.

        Die software rugt eine seite auf und übergibt folgende 2 variablen:

        PHP Code:
        .../updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele 
        Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?

        Comment


        • #5
          Originally posted by h3ll View Post
          Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?

          Der Software das austriben? Ähmm ok ich bin dafür :-)

          Aber die kodiert nichts, das ist der code der der die webseite aufruft und beinhaltet dann auch die parameter:

          PHP Code:
            Case 1ShellExecute Me.hwnd"Open""http://www.example.com/updatecheck.php?prg=" appName "&ber=Spiele"""""1
            
          'Webseite im Standard-Webbrowser aufrufen 
          Das ist visualbasic
          In appName steht zB Programmname v1.00 drin
          ...und wenn das auf der webseite ankommt wird bereits das eine leerzeichen durch %20 oder sowas ersetzt....von den umlauten ganz zu schweigen.

          Also ich denke nicht das hier was zu ändern wäre.

          Ich würde mich da lieber auf die php-seite stürzen...
          Der Ansatz von Mitglied "derHund" ist schon mal nicht schlecht....aber das wird ja ein rießen ding wenn ich da alle möglichkeiten durch replace jage!

          Warum kan urldecode / urlencode da nicht helfen?
          Übrigens die webseite ist NICHT in UTF8 sondern charset=ISO-8859-1 ....wenn das noch wichtig wäre zur info.
          ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

          Comment


          • #6
            Originally posted by h3ll View Post
            Die Software kodiert die Parameter doppelt. Komplett schwachsinnig. Kann man ihr das nicht austreiben?
            Damit gemeint ist folgendes:
            PHP Code:
            <?php
            echo urldecode(urldecode('Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00'));
            // => Programmname äöüß v1.00
            ?>

            Comment


            • #7
              Originally posted by RamonaS View Post
              Aber die kodiert nichts, das ist der code der der die webseite aufruft und beinhaltet dann auch die parameter
              Das ist aber falsch:
              Code:
              updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
              Richtig wäre:
              Code:
              updatecheck.php?prg=Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00&ber=Spiele

              Comment


              • #8
                Schau dir mal PHP: urldecode - Manual an. Die Funktion decodiert zumindest die Multibyte-Codes richtig, macht also aus
                Code:
                Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00
                Code:
                Programmname äöüß v1.00
                Die Zeit hat ihre Kinder längst gefressen

                Comment


                • #9
                  Originally posted by sili View Post
                  Damit gemeint ist folgendes:
                  PHP Code:
                  <?php
                  echo urldecode(urldecode('Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00'));
                  // => Programmname äöüß v1.00
                  ?>
                  Hmm bei mir sieht das noch etwas anders aus....des gewirre ist zwar kürzer aber immer noch unlesbar:

                  PHP Code:
                  Ergebnis bei mir
                  Programmname Ã¤Ã¶Ã¼ÃŸ v1.00 
                  ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                  Comment


                  • #10
                    Originally posted by h3ll View Post
                    Das ist aber falsch:
                    Code:
                    updatecheck.php?prg=Programmname%2520%25C3%25A4%25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele
                    Richtig wäre:
                    Code:
                    updatecheck.php?prg=Programmname%20%C3%A4%C3%B6%C3%BC%C3%9F%20v1.00&ber=Spiele
                    Hmm also da wird "fälschlicherweise" zu jedem sonderzeichen die zahl 25 dazwischengequetscht!

                    Hmm also der quellcode von visualbasic enthält jetzt nichts verkertes....vielleicht hat das mit microsoft was zu tun...naja auf jedenfall muß das auf der webseite klar lesbar sein :-) sonst kann ich kein mysql mit dem zeigs füttern.

                    ich frag mal in einem visualb forum nach.
                    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                    Comment


                    • #11
                      Originally posted by RamonaS View Post
                      Hmm bei mir sieht das noch etwas anders aus....des gewirre ist zwar kürzer aber immer noch unlesbar:

                      PHP Code:
                      Ergebnis bei mir
                      Programmname Ã¤Ã¶Ã¼ÃŸ v1.00 
                      Das liegt an deinem Encoding, verwende besser ausschliesslich UTF-8.

                      Comment


                      • #12
                        Originally posted by RamonaS View Post
                        Hmm also der quellcode von visualbasic enthält jetzt nichts verkertes....vielleicht hat das mit microsoft was zu tun...
                        Ich vermute eher, dass der Programmierer gepfuscht hat.

                        Comment


                        • #13
                          An alle Lesende

                          Ich habe das jetzt so gelößt:

                          In meiner Adressleiste des Browser gebe ich nun folgendes ein:
                          PHP Code:
                          http://localhost/software/updatecheck.php?prg=Programmname%2520%25C3%25A4
                          %25C3%25B6%25C3%25BC%25C3%259F%2520v1.00&ber=Spiele 
                          und damit sieht das perfekt aus:
                          PHP Code:
                          $prg=urldecode(trim($_GET['prg']));
                          $prg=urldecode($prg);
                          $prg=utf8_decode($prg);
                          echo 
                          "<br />prg=".$prg;

                          $ber=urldecode(trim($_GET['ber']));
                          $ber=urldecode($ber);
                          $ber=utf8_decode($ber);
                          echo 
                          "<br />ber=".$ber
                          Jetzt wollte ich euch fragen, ob das auch so bleibt!?
                          Oder ob eventuell die Umlaute anders kodiert an die webseite ankommen, wenn der programmbenutzer zB in russland ist und sein winxp kyrilischer zeichensatz geladen hat.
                          ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                          Comment


                          • #14
                            Originally posted by RamonaS View Post
                            Jetzt wollte ich euch fragen, ob das auch so bleibt!?
                            Hoffentlich nicht, denn wie schon mehrfach angesprochen wurde, ist die doppelte URL-Kodierung falsch und redundant.
                            Oder ob eventuell die Umlaute anders kodiert an die webseite ankommen, wenn der programmbenutzer zB in russland ist und sein winxp kyrilischer zeichensatz geladen hat.
                            Wenn du die Parameter schon korrekt kodiert (korrekt wäre ein mal!) in den URL einbaust, dann gibt es darin schon gar keine „Umlaute“ mehr, sondern die Adresse ist bereits komplett ASCII-kompatibel.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Comment


                            • #15
                              Originally posted by wahsaga View Post
                              Hoffentlich nicht, denn wie schon mehrfach angesprochen wurde, ist die doppelte URL-Kodierung falsch und redundant.

                              Wenn du die Parameter schon korrekt kodiert (korrekt wäre ein mal!) in den URL einbaust, dann gibt es darin schon gar keine „Umlaute“ mehr, sondern die Adresse ist bereits komplett ASCII-kompatibel.
                              Ok das hat sich jetzt entgültig erledigt....ich konnte den programmierer überzeugen, seine ganze software abzuändern...jetzt werden keine sonderzeichen mehr verwendet und leerzeichen werden mit unterstrich ersetzt....so sollte es zu keinen kodierungen mehr kommen.
                              ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

                              Comment

                              Working...
                              X