Raute in GET Parameter - Geht nicht?

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

  • Raute in GET Parameter - Geht nicht?

    Hallo Leutz...

    habe ein kleines Problemchen:

    PHP-Code:
    $bgcolor $_GET["bgcolor"]; 
    $bgcolor str_replace('#','',$bgcolor); 
    echo 
    $bgcolor
    Soweit klar was, das machen soll... es soll per Parameter aufruf farbe.php?bgcolor=#ffc0ff die Raute entfernt werden, für denn Fall, dass da eine steht. Irgendwie läuft das aber nicht. Wenn ich den String nicht per GET hole sondern zuweise geht es. Muss also daran liegen, dass man keine RAUTEN per GET übergeben darf?

    Wisst ihr dazu was?

    Grüße

  • #2
    die raute ist ein lokaler sprunganker innerhalb eines dokumentes. da du sie eh ersetzen willst, lass sie im link einfach weg
    PHP-Code:
    farbe.php?bgcolor=ffc0ff 
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Das mit dem anchor weiß ich ja...darum dachte ich man kann sie klammern und demnach nicht als Anchor setzen.
      Das Problem ist, bgcolor wird vorher von den Usern per Formular gesetzt. Es muss trotzdem GET sein, da ein nachträglicher Aufruf machbar sein muss.
      Will dem User nicht komisch kommen und reinschreiben COLOR-Code OHNE #.

      Es soll idiotensicher sein. Da ich mit dem Formular die verarbeitende GET Seite direkt aufrufe, macht sich ein Zwischen auch blöd.

      Kann man denn HTML nicht irgendwie sagen, dass die # kein Anchor ist?

      Grüße

      sabi

      Kommentar


      • #4
        Schreib doch eine Raute vor das Eingabefeld

        Statt:
        Code:
        Farbcode: <input type ="text" name =" bgcolor" />
        einfach
        Code:
        Farbcode: #<input type ="text" name =" bgcolor" />
        Wenn schon eine Raute da ist, wird wohl so gut wie niemand noch eine ins Eingabefeld eintippen, oder?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von sabinchen
          Kann man denn HTML nicht irgendwie sagen, dass die # kein Anchor ist?
          Natürlich, wenn du es URL-gerecht kodierst.

          Das Problem ist, bgcolor wird vorher von den Usern per Formular gesetzt.
          Wenn du ganz normal ein Formular abschickst, kümmert sich doch der Browser um die Kodierung.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            Natürlich, wenn du es URL-gerecht kodierst.
            Danke. Ich dachte schon das schreibt keiner mehr und hier
            werden weiter frickellösungen angeboten.

            greets
            (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

            Kommentar


            • #7
              Danke für die Antworten.

              Ich will nochmal beschreiben, was ich vorhabe:

              Der User gibt in ein Formular ein:

              Name, Schriftgröße und HEX-Farbwert

              Daraus wird per GET dann ein Bild erstellt mit PHP.
              Der HTML Code zum Einbinden des Bildes wird ebenfalls angezeigt.
              Das Bild ist demnach erreichbar unter http://......de/bild.php?name=...&fo...&bgcolor=.....

              Es muss also irgendwie möglich sein, selbst wenn z.B. auch eigenmächtig durch den User der Code geändert wird in ein #FFC0FF, dass das #-Zeichen entfernt wird.

              Kommentar


              • #8
                das entfernen ist doch gar nicht dein problem?

                $bgcolor = str_replace('#','',$bgcolor);

                Kommentar


                • #9
                  Das Entfernen im Zusammenhang mit der Übergabe der Raute als Parameter ist das Problem.

                  Unanhängig davon MUSS es ja möglich sein, eine Raute als Parameter zu übergeben.

                  Grüße

                  Kommentar


                  • #10
                    Das Entfernen im Zusammenhang mit der Übergabe der Raute als Parameter ist das Problem.
                    Außer mit JS hast du da keine Möglichkeit. PHP kann ja erst eingreifen, wenn die Daten schon übergeben sind.

                    Unanhängig davon MUSS es ja möglich sein, eine Raute als Parameter zu übergeben.
                    Natürlich, wenn du es URL-gerecht kodierst. Wenn du ganz normal ein Formular abschickst, kümmert sich doch der Browser um die Kodierung.

                    Kommentar


                    • #11
                      sabinchen, nimm einfach dieses Formular, lade es in dein Browser und klicke auf dem button, dann wirst du schon an der Browseradresse sehen
                      PHP-Code:
                      <form>
                        <
                      input type="text" value="#ffffff" name="test" />
                        <
                      input type="submit" value="click me" />
                      </
                      form

                      Kommentar


                      • #12
                        Original geschrieben von sabinchen
                        Das Entfernen im Zusammenhang mit der Übergabe der Raute als Parameter ist das Problem.
                        entfernen kannst du, wie bereits mehrfach genannt mittels str_replace().
                        und nicht nur die raute sollte ein problem sein, sondern alles, was der user mit dem formular abschickt.

                        also erster punkt wäre eine ordentliche validierung deines formulars.
                        name: nur alphanumerische zeichen bestimmter länge (min-max), bzw. datei existiert, weiß nicht so genau, was du vorhast
                        schriftgröße: ein integer >0 und < x
                        farbwert: drei hexazahlen von 0 bis 255 (oder veilleicht auch rgb)

                        so, schlägt die überprüfung fehl, gibst du die fehler aus und zeigst das formular erneut an, damit der benutzer es korrigieren kann.
                        ansonsten kannst du den html-code für den link generieren.

                        Unanhängig davon MUSS es ja möglich sein, eine Raute als Parameter zu übergeben.
                        ja, mit urlencode().
                        das ist aber nicht notwendig, da das formular bereits nur gültige werte zulässt, die nicht url-encodet werden müssen - s.o.

                        in deiner bild.php würde ich aber o.g. validierung nochmals ausführen, da der link vom benutzer manipuliert sein könnte.

                        Kommentar


                        • #13
                          Original geschrieben von 3DMax

                          in deiner bild.php würde ich aber o.g. validierung nochmals ausführen, da der link vom benutzer manipuliert sein könnte.
                          Warum dann nicht nur in bild.php bzw. im entsprechenden model validiern ?

                          greets
                          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                          Kommentar


                          • #14
                            Warum dann nicht nur in bild.php bzw. im entsprechenden model validiern ?
                            Weil eine clientseitige Validierung schonmal den gröbsten Schrott rausfiltern kann, ohne den Server zu bemühen.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Original geschrieben von jahlives
                              Weil eine clientseitige Validierung schonmal den gröbsten Schrott rausfiltern kann, ohne den Server zu bemühen.
                              Das ist aber unlogisch. Wenn ich es mache um den server nicht zu bemühen
                              dann würde ich die validierung später auch weglassen. Ansonsten hab
                              ich doch die selbe situation als hätte ich gleich auf dem server validiert.

                              Ich verstehe ja die grundsätzliche idee. Ich seh es nur einfach nicht als
                              notwendig an. IMHO gehört validierung ins model. Wenn ich die validierung
                              aber noch clientseitig also mit js mache, dann muss ich irgendwo im view code
                              erzeugen der da nicht hingehört. Ich hab wieder zwei baustellen.
                              Veränder ich das model muss ich auch immer die validierung im view ändern.
                              Habe ich 50 stellen an dem das model gebraucht wird, hab ich viel zu tun.

                              greets
                              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                              Kommentar

                              Lädt...
                              X