romy: vor welche Sonderzeichen müssen Backslashes

hi,

bei welchen Sonderzeichen muss ich Backslashes davorsetzen, wenn ich einen string zusammenbaue?
ich weiss nur bei " und ' und...?

header = "Location:http://netxp.intra.net/~romy/ordner.1/index-tables.php?request=1";
geht nämlich nicht, es gibt einen parse error
und das kann ja nur an sowas liegen

danke
ciao

--
DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
  1. Hi,

    bei welchen Sonderzeichen muss ich Backslashes davorsetzen, wenn ich einen string zusammenbaue?

    Sonderzeichen müssen vor jedes Zeichen, welches eine besondere Bedeutung hat, wenn diese nicht erwünscht ist. Dazu gehört immer auch das Escape-Zeichen, also der Backslash selbst.

    header = "Location:http://netxp.intra.net/~romy/ordner.1/index-tables.php?request=1";
    geht nämlich nicht, es gibt einen parse error

    Da es für mich normal aussieht (abgesehen davon, dass hinter "Location:" ein Leerzeichen stehen sollte - und das die Tilde "~" in URLs nicht erlaubt ist und als "%7E" kodiert zu werden hat), unterstelle ich den Fehler kurz vor dieser Zeile. Ein Parser meldet einen Fehler erst dann, wenn er etwas nicht mehr interpretieren kann; unabhängig davon, wo der Mensch dann die Lösung platziert.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,

      unterstelle ich den Fehler kurz vor dieser Zeile. Ein Parser meldet einen Fehler erst dann, wenn er etwas nicht mehr interpretieren kann; unabhängig davon, wo der Mensch dann die Lösung platziert.

      mhm, das mag echt sein, ich hab noch ne Idee
      wenn ich ne Get-variable abfrage, ist die dann als string gespeichert?
      also if($_get["link"] == 1) geht nicht, da ich anführungszeichen drumrummachen muss?
      kann gerade nicht probieren!
      danke der rest hat mir sehr geholfen

      PS: du schreibst immer wieder unter postings, das gewisse zeichen im url-string ausgetauscht werden müssen, zB auch das &
      wo gibt es denn eine Liste, welche zeichen womit codiert werden müssen?

      ciao

      Cheatah

      --
      DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
      1. Hi Romy,

        PS: du schreibst immer wieder unter postings, das gewisse zeichen im url-string ausgetauscht werden müssen, zB auch das &
        wo gibt es denn eine Liste, welche zeichen womit codiert werden müssen?

        Habe cih neulich auch schon mal danach gefragt, nach welchem Zeichensatz das denn geht. Konnt mier auch keiner sagen. Extended ASCII scheint es nicht zu sein.

        Aber es gibt ja die Funktionen ulrdecode() und urlemcode(). Wenn Du Deine Strings da durchschickst, werden sie entsprechend behandelt. Oder wenn Du ein Formular per method="get" verschickst, macht das Codieren der Browser für dich. Ist doch nett, oder?#

        Grüße

        Tom

        1. Hi Romy,

          Aber es gibt ja die Funktionen ulrdecode() und urlemcode(). Wenn Du Deine Strings da durchschickst, werden sie entsprechend behandelt. Oder wenn Du ein Formular per method="get" verschickst, macht das Codieren der Browser für dich. Ist doch nett, oder?#

          natürlich, extrem nett ! *g*
          d.h also, so viele Gedanken muss ich mir darum gar nicht machen?
          ausser ich setze ein URL selbst zusammen und diese Zeichen kommen vor
          wieso hab ich da eigentlich nie Probleme bekommen bis jetzt?
          Tolerieren viele Browser die Fehleingaben?
          ciao und ganz liebe Grüsse
          romy

          Grüße

          Tom

          --
          DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
          1. Hi,

            d.h also, so viele Gedanken muss ich mir darum gar nicht machen?
            ausser ich setze ein URL selbst zusammen und diese Zeichen kommen vor

            jupp.

            wieso hab ich da eigentlich nie Probleme bekommen bis jetzt?
            Tolerieren viele Browser die Fehleingaben?

            Die meisten "modernen" (sprich: graphischen, auch weniger netzinternen Usern bekannten) Browser haben ob ihrer Fehlerkorrekturen mit einem <a href="?bla=1&blub=2"> kein Problem - meistens. Wenn es dann z.B. "?bla=1&copy=2" heißt, sieht es plötzlich ganz anders aus, weil davon "?bla=1©=2" übrig bleibt. Beim IE 4 konnte ich sogar beobachten, dass er in "&currency=" das "&curren" erkannt hat und es schlussendlich "¤cy=" hieß.

            Cheatah

            --
            X-Will-Answer-Email: No
        2. Hallo!

          Habe cih neulich auch schon mal danach gefragt, nach welchem Zeichensatz das denn geht. Konnt mier auch keiner sagen. Extended ASCII scheint es nicht zu sein.

          Vielleicht hilft Dir: http://selfhtml.teamone.de/html/allgemein/referenzieren.htm#uri

          Grüße
          Andreas

      2. Hi,

        wenn ich ne Get-variable abfrage, ist die dann als string gespeichert?

        ja, natürlich. Sie wurde schließlich aus einem String ermittelt.

        also if($_get["link"] == 1) geht nicht, da ich anführungszeichen drumrummachen muss?

        Könnte sein, sollte aber nicht für einen Parsing-Error verantwortlich sein. 1=="1" ergibt eben false, das ist alles.

        kann gerade nicht probieren!

        Schau mal nach, ob da in der Region noch irgendwas anderes falsch sein könnte - beispielsweise auch "merkwürdige" Whitespaces.

        PS: du schreibst immer wieder unter postings, das gewisse zeichen im url-string ausgetauscht werden müssen, zB auch das &

        Nichts durcheinanderbringen, bitte :-) Es gibt unterschiedliche Kodierungen, die immer genau(!) dann eingesetzt werden müssen, wenn der Wert im für die Kodierung gedachten Bereich eingesetzt wird. Welche Zeichen in einer URL gültig sind, steht in RFC 1738 (http://www.ietf.org/rfc/rfc1738.txt); welche Zeichen in einem URL-_Parameter_ (bzw. dessen Wert) stehen dürfen ist davon abhängig, wie "URL-Parameter" definiert ist: Gewöhnlich wird an "&" und "=" getrennt, d.h. auch diese Zeichen müssen innerhalb von Name und Wert kodiert sein, sonst gelten sie als Trenner.

        Wenn ich darauf hinweise, dass ein "&" kodiert werden muss, dann geschieht dies gewöhnlich im Zusammenhang mit HTML: Dort ist dies nämlich das Escape-Zeichen, es leitet eine Entität ein, ist also vergleichbar mit dem Backslash in Strings z.B. bei PHP. Mit URLs hat diese Kodierung per se nicht das geringste mehr zu tun - in diesem _semantischen_ Zusammenhang taucht das Problem einfach nur am häufigsten auf.

        wo gibt es denn eine Liste, welche zeichen womit codiert werden müssen?

        "hier gültiges Sonderzeichen" mit "hier gültigem Escape-Zeichen". Das gilt für jedes "hier". Ein Sonderzeichen ist entweder ein Zeichen mit einer besonderen Bedeutung, oder eines, welches an der Stelle überhaupt nicht erlaubt ist (in URLs beispielsweise alles jenseits von chr(127)).

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi,

          Schau mal nach, ob da in der Region noch irgendwas anderes falsch sein könnte - beispielsweise auch "merkwürdige" Whitespaces.

          ich habs gefunden
          <blind> man sollte doch ein $ vor die Variable machen </blind>
          wenn man schnell tippt, macht man aber auch merkwürdige Fehler

          Nichts durcheinanderbringen, bitte :-)

          okay, ich hüte mich ;)
          danke für die restlichen Ausführungen

          ich hätte mal noch ne Frage, will aber dafür keinen neuen Thread aufmachen:
          wenn ich daten in einer sql-datenbank speichere, wo sind dann die daten
          ich weiss nur wo die Datei liegt, die die DB anlegt und mit Vorwerten füllt, aber wo ist dann der Teil, wo die ganzen Daten dann eingefügt werden
          das muss ja auch ne Datei sein <bloedfrag> welche Dateiendung hat die und wo wird die intern abgelegt (speziell interessiert mich das für linux)
          ???

          wünsch Dir was
          ciao

          --
          DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
          1. Hi,

            wenn ich daten in einer sql-datenbank speichere, wo sind dann die daten

            in der Eigenverwaltung der Datenbank. In aller Regel sind die Daten in irgendeiner Form in einer Datei gespeichert; wo das ist ist vom DBMS abhängig, und ob die Daten für jemand anders als das System selbst lesbar sind, ist zumindest anzuzweifeln.

            das muss ja auch ne Datei sein <bloedfrag> welche Dateiendung hat die und wo wird die intern abgelegt (speziell interessiert mich das für linux)

            Das Betriebssystem dürfte damit i.d.R. nicht das geringste zu tun haben, sondern es liegt nur am DBMS - und je nach DBMS ist es dann auch OS-abhängig. Ich persönlich denke aber, dass das für einen nicht-Hardcore-DBA völlig uninteressant ist: Es ist schließlich der _Job_ eines DBMS, genau das zu wissen, so dass es niemand anders mehr wissen muss.

            Cheatah

            --
            X-Will-Answer-Email: No
  2. Hallo!

    bei welchen Sonderzeichen muss ich Backslashes davorsetzen, wenn ich einen string zusammenbaue?

    Steht im Manual: http://www.php3.de/manual/de/language.types.string.php

    Grüße
    Andreas