Variablen aus URL extrahieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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?

    Kommentar


    • #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

      Kommentar


      • #4
        Zitat von RamonaS Beitrag anzeigen
        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?

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          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

          Kommentar


          • #6
            Zitat von h3ll Beitrag anzeigen
            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
            ?>

            Kommentar


            • #7
              Zitat von RamonaS Beitrag anzeigen
              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

              Kommentar


              • #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

                Kommentar


                • #9
                  Zitat von sili Beitrag anzeigen
                  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

                  Kommentar


                  • #10
                    Zitat von h3ll Beitrag anzeigen
                    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

                    Kommentar


                    • #11
                      Zitat von RamonaS Beitrag anzeigen
                      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.

                      Kommentar


                      • #12
                        Zitat von RamonaS Beitrag anzeigen
                        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.

                        Kommentar


                        • #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

                          Kommentar


                          • #14
                            Zitat von RamonaS Beitrag anzeigen
                            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.

                            Kommentar


                            • #15
                              Zitat von wahsaga Beitrag anzeigen
                              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

                              Kommentar

                              Lädt...
                              X