planlos: anker zusammen mit get variablen

hallo zusammen,

ich hab nen kleines (oder großes) problem mit php.
und zwar will ich zusammen mit get variablen einen anker übergeben.
der link sieht folgendermassen aus:

index.php?PHPSESSID=9f86d87f270daa0dd96e24170124b246&content=bild&bild=IMG_6882.JPG&typ=gross#bild

das problem ist, dass der browser erst nach dem aktualisieren der aufgerufenen seite zum anker springt.
beim ersten aufruf springt er einen tick nach unten, aber nicht zum anker. (das seitenende wird nicht erreicht).
ich habe auch schon die & escaped, das funktioniert allerdings auch nicht.

in diversen foren und in google hab ich das problem zwar gefunden, aber leider keine funktionierenden lösungen.
als browser verwende ich den ie und firefox ...

hab auch schon alle möglichen positionen des ankers innerhalb des links ohne erfolg ausprobiert.

hat jemand ne idee, wie das problem gelöst werden kann?

danke schonmal

  1. Hello,

    hat jemand ne idee, wie das problem gelöst werden kann?

    Ich erinnere mich daran, dass wir dieses Thema hier schon mal lang und breit diskutiert haben. Du könntest also mit etwas Glück im Archiv einiges dazu finden. Ich weiß aber leider nicht mehr, unter welchem Subject das gelaufen ist und ob es letztes oder vorletztes Jahr war...

    Prinzipiell sollte es aber klappen.

    Ich erinnere mich aber auch, dass es im IE nicht ging, wenn dies die URL für ein Frame war. Da war einfach nix zu machen ohne JavaScript.

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    1. Danke, hab in anderen threads hier im forum au glesen, dass des schonmal  diskutiert wurde, gab aber leider keinen link direkt dazu.
      dann werd ich nommal nen weng suchen, vielleicht find ichs ja.
      frames benutz ich nicht.

      1. Hello,

        ich habe gerade nochmal meine Annalen durchgesehen und einige Versuche dazu gefunden.

        Der IE macht das mit dem Anker nur, wenn er ihn über einen Link erhalten hat.
        In der Adressleiste steht dann zwar noch z.B. "#kap02" aber das überträgt er ja nicht mit dem URi. Er trennt vermutlich den Anker intern schon beim Aufruf des Links ab.

        Wenn ich den Anker manuell in die Adresszeile eingebe, tut sich nichts mehr.

        Mit einem kleinen Trick geht es da aber auch

        <?php  #### anker_call_variable.php ####

        $go = '';
        if (isset($_GET['go']))
        {
          $go = '#'.$_GET['go'];   ### url-encoding beachten!
        }

        header("Location: anker.php?var1=2345&var2=hallo$go");

        ?>

        Beim Firefox 2.x funktioniert es immer einwandfrei, auch ohne Tricks

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Hello,

          Der IE macht das mit dem Anker nur, wenn er ihn über einen Link erhalten hat.
          In der Adressleiste steht dann zwar noch z.B. "#kap02" aber das überträgt er ja nicht mit dem URi.

          Für seine eignen Zwecke trennt vermutlich den Anker intern schon beim Aufruf des Links ab, obwohl er ihn ja uch aus der Adressleiste holen könnte, so wie der Firefox. Denn dort muss er ihn ja sowieso abtrennen, da er ihn ja nicht, wie schon gesagt, mit der URi übertragen soll.

          Wenn ich den Anker also manuell in der Adresszeile nachbessere, tut sich beim IE nichts mehr.

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

          1. hey, danke für deine Mühe.
            leider tritt immernoch das selbe problem auf.
            das problem ist im ie und firefox genau das gleiche.

            ich kann den link aufrufen und der scrollt nen tick nach unten (aber nicht zum anker), wenn ich dann im browser auf aktualisieren klick, springt er zum anker. beim erneuten laden der seite wird auch direkt zum anker gescrollt.

            hab auch den anker mit javascript (hash) ausgelesen und wird schon beim ersten aufruf richtig angezeigt.

            1. Hello,

              ich kann den link aufrufen und der scrollt nen tick nach unten (aber nicht zum anker), wenn ich dann im browser auf aktualisieren klick, springt er zum anker. beim erneuten laden der seite wird auch direkt zum anker gescrollt.

              Ist die Seite valides HTML?

              Ist die Seite vielelicht online?

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

              1. Die seite is momentan nicht online.
                ich kann hier mal den quelltext posten, der ausgegeben wird:

                <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                <html>
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
                <title>Foto-Koala - Hier verwalten, digitalisieren und sichern Sie bequem Ihre Fotos!</title>
                </head>
                <body bgcolor="#6D8048">
                <table border="1" bordercolor="#000000" cellspacing="0" cellpadding="0" width="850" align="center">
                <tr><td height="100" bgcolor="#A4BF6C" align="center"><img src="grafx/logo.jpg" alt="Foto-Koala"></td></tr>
                <tr><td height="30" bgcolor="#C5E682" align="center"><table border="0" cellpadding="0" cellspacing="0">
                <tr>
                <td align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=bilder">Meine Bilder</a></td>
                <td align="center" width="50"></td>
                <td align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=alben">Alben</a></td>

                <td align="center" width="50"></td>
                <td align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=upload">Upload</a></td>
                <td align="center" width="50"></td>
                <td align="center">Suchen</td>
                <td align="center" width="50"></td>
                <td align="center">Digitalisierung</td>
                <td align="center" width="50"></td>
                <td align="center">Einstellungen</td>
                <td align="center" width="50"></td>
                <td align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=auslogen">Auslogen</a></td>
                </tr>
                </table></td></tr>

                <tr><td height="40" bgcolor="#A4BF6C"></td></tr>
                <tr><td height="670" bgcolor="#DBFF91" align="center" valign="top"><br><br><a name="bild"></a>
                <table>
                <tr>
                <td width="100" align="center">
                </td><td width="100" align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=bilder">Übersicht</a></td><td width="100" align="center">
                <a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=bild&ordner=555&bild=IMG_6880.JPG&typ=gross#bild">vorwaerts</a></td></tr></table>

                <a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=bild&ordner=555&bild=IMG_6880.JPG&typ=gross#bild"<img src="bilder/bilder.php?ordner=555&bild=IMG_6817.JPG&typ=gross"></a><p></p><p><br><br></p><hr>
                <a name="aenderung"></a>
                <form method="post" action="#aenderung">
                <table>
                <tr>
                <td>Beschreibung:</td><td><input name="beschreibung" type="text" size="50" value=""></td></tr>

                <tr><td>Keywords:</td><td><input name="keywords" type="text" size="50" value=""></td></tr>
                <tr><td></td><td></td></tr>
                <tr><td></td><td><input type="submit" value="aendern"></td></tr>
                </table>
                </form>
                <hr>
                <table>
                <tr><td><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=loeschen&bild=IMG_6817.JPG">Bild loeschen</td></tr>
                </table></td></tr>
                <tr><td height="50" bgcolor="#A4BF6C"></td></tr>
                </table>
                </body>
                </html>

                1. Hello,

                  <td align="center"><a href="index.php?PHPSESSID=b43ffb0268ef0f76e91ef4edc9869679&content=bilder">Meine Bilder</a></td>

                  Die URi's sind auch falsch.
                  Da muss das & überall als benanntes HTML-Zeichen geschrieben werden, wenn Du ISO-8859-X benutzt.

                  Dazu solltest Du am besten auch Dein PHP umstellen

                  arg_separator.output = '&amp;'

                  Dann sollte es das richtig machen.
                  Und wenn Du händisch Links erzeugst im HTML-Kontext, also NICHT in der Adresszeile, dann musst Du eben selber daran denken. Außerdem müssen alle Attributes und alle Values einzeln (raw-)url-codiert werden.

                  Harzliche Grüße vom Berg
                  http://bergpost.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                  1. Ok, danke,
                    also die & hab ich schonmal zum testen alle als &amp geschrieben.
                    die einstellung in php ist auch auf den von dir genannten wert eingestellt.

                    wegen dem url-codieren hab ich grad mal im manuel nachgeguckt.
                    du meinst die funktion urlencode, oder?
                    muss ich auf der zielseite dann noch urldecode anwenden?

                    werds gleich mal ausprobieren.

                    1. Hello,

                      wegen dem url-codieren hab ich grad mal im manuel nachgeguckt.
                      du meinst die funktion urlencode, oder?
                      muss ich auf der zielseite dann noch urldecode anwenden?

                      Ich bin da nicht ganz sicher, was richtig ist.
                      Bei mir hat nur rawurlencode() brauchbare Ergebnisse geliefert.

                      Das musst Du dann auf jeden Bezeichner und jeden Wert anwenden, bevor Du den Link zusammenbaust. Und dann müsste eigentlich noch der HTML-Kontext berücksichtigt werden.

                      also   $param_lnk = htmlentities(rawurlencode($param),ENT_QUOTES);

                      Ob sich da aber noch was tut, also welche urlcodiertgen Zeichen noch HTML-schädlich sind, weiß ich nicht auswendig.

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                      1. Habs jetzt mal folgendermaßen probiert:

                        $link_string=session_name()."=".session_id()."&content=".rawurlencode("bild")."&ordner=".rawurlencode($_GET['ordner'])."&bild=".rawurlencode($array_groesser['bild'])."&typ=".rawurlencode("gross");
                         echo "<a href="index.php?".htmlentities($link_string,ENT_QUOTES)."#bild">";

                        allerdings noch ohne erfolg... hab jetzt leider grad keine zeit mehr, werd später nochmal nen weng rumprobieren.

                        danke für deine hilfe und das du dir die zeit genommen hast!

                        1. Hello,

                          Habs jetzt mal folgendermaßen probiert:

                          $link_string=session_name()."=".session_id()."&content=".rawurlencode("bild")."&ordner=".rawurlencode($_GET['ordner'])."&bild=".rawurlencode($array_groesser['bild'])."&typ=".rawurlencode("gross");
                          echo "<a href="index.php?".htmlentities($link_string,ENT_QUOTES)."#bild">";

                          allerdings noch ohne erfolg... hab jetzt leider grad keine zeit mehr, werd später nochmal nen weng rumprobieren.

                          sieht aber eigentlich gut aus.

                          &content=".rawurlencode("bild")   Da ist ja nix schädliches drin und es sit statisch vorgegeben. Dann reicht sicher auch &content=bild

                          Nur bei Variablen, wie auch z.B. beim Rückgabewert von session_name() müsste man aufpassen. Der könnte ja schließlich auch irgendwelche wilden Zeichen enthalten. Ich habe noch nie ausprobiert, ob PHP hier selbst für Abhilfe sorgt. Kommt gleich mit auf den Zettel :-)

                          Bin gespannt, was nachher dabei rauskommt.

                          Harzliche Grüße vom Berg
                          http://bergpost.annerschbarrich.de

                          Tom

                          --
                          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                          Nur selber lernen macht schlau
                          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                          1. Hey, also ich hab nun noch nen weng rum probiert und auch mal die session und den namen codiert.
                            und den anker an verschiedenen positionen gesetzt, aber leider ohne erfolg.
                            mit ist nur noch aufgefallen, dass wenn das browserfenster nicht mit voller größer angezeigt wird, dann funktioniert... und nach dem aktualisieren oder 2. aufruf der seite bei voller ansicht springt er ja auch immer zum anker...

                            werd jetzt aufgeben und hab des ganze mit nem kleinen javascript gelöst. ist zwar unschön, aber funktioniert. hab nun schon mehrere tage mit diesem problem verbracht und werd einfach net schlauer...

                            danke für deine hilfe

                      2. Moin!

                        also   $param_lnk = htmlentities(rawurlencode($param),ENT_QUOTES);

                        Würdest du zugunsten eines allgemein verbesserten Programmierstiles diese Funktion mal aus deinem Sprachschatz streichen und durch htmlspecialchars ersetzen?

                        - Sven Rautenberg

                        --
                        "Love your nation - respect the others."
                        1. Hello,

                          also   $param_lnk = htmlentities(rawurlencode($param),ENT_QUOTES);

                          Würdest du zugunsten eines allgemein verbesserten Programmierstiles diese Funktion mal aus deinem Sprachschatz streichen und durch htmlspecialchars ersetzen?

                          Ja, habe ich gestern nach unserem etwas ausführlicheren Teilthread sofort gemacht.
                          ch bin eben ein wenig paranoid und da erschien mit htmlentities einfach sicherer als htmlspecialchars.

                          Aber der eigentliche Grund ist, dass ich htmlspecialchars *uff* selten richtig schreibe. :-)

                          Harzliche Grüße vom Berg
                          http://bergpost.annerschbarrich.de

                          Tom

                          --
                          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                          Nur selber lernen macht schlau
                          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                        2. Hi,

                          Würdest du zugunsten eines allgemein verbesserten Programmierstiles diese Funktion mal aus deinem Sprachschatz streichen und durch htmlspecialchars ersetzen?

                          Habe ich was verpaßt? Warum sollte man das tun? Den Thread mit der "gestrigen Diskussion" habe ich wohl schon ausgeblendet ...

                          Gruß, Cybaer

                          --
                          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                          1. Moin!

                            Würdest du zugunsten eines allgemein verbesserten Programmierstiles diese Funktion mal aus deinem Sprachschatz streichen und durch htmlspecialchars ersetzen?

                            Habe ich was verpaßt? Warum sollte man das tun? Den Thread mit der "gestrigen Diskussion" habe ich wohl schon ausgeblendet ...

                            Wenn du einen String potentiell unbekannter Codierung im HTML-Kontext ausgeben willst - welche Funktion verspricht am wenigsten Probleme zu verursachen?

                            - Sven Rautenberg

                            --
                            "Love your nation - respect the others."
                            1. Hi,

                              Wenn du einen String potentiell unbekannter Codierung im HTML-Kontext ausgeben willst - welche Funktion verspricht am wenigsten Probleme zu verursachen?

                              Auch wenn ich innerhalb meiner Websites die jeweiligen Kodierungen kenne: Da ist was dran! :-))

                              Gruß, Cybaer

                              --
                              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                              1. Hello,

                                Wenn du einen String potentiell unbekannter Codierung im HTML-Kontext ausgeben willst - welche Funktion verspricht am wenigsten Probleme zu verursachen?

                                Auch wenn ich innerhalb meiner Websites die jeweiligen Kodierungen kenne: Da ist was dran! :-))

                                Wodran ist was? an Deiner Webseite? ;-)

                                Harzliche Grüße vom Berg
                                http://bergpost.annerschbarrich.de

                                Tom

                                --
                                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                                Nur selber lernen macht schlau
                                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                                1. Hi,

                                  Auch wenn ich innerhalb meiner Websites die jeweiligen Kodierungen kenne: Da ist was dran! :-))
                                  Wodran ist was? an Deiner Webseite? ;-)

                                  Ja, vermutlich die Seuche - eingeschleppt von Usern, die eigenmächtig Daten verändern, und das auch noch in beliebigen Zeichensätzen. Skandal, das! ;-)

                                  Gruß, Cybaer

                                  --
                                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                  2. Hi,

                    Da muss das & überall als benanntes HTML-Zeichen geschrieben werden,

                    nein, als numerische Zeichenreferenz ginge es auch.

                    wenn Du ISO-8859-X benutzt.

                    Diese Einschränkung ist unsinnig.

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    O o ostern ...
                    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                    1. Hello,

                      Da muss das & überall als benanntes HTML-Zeichen geschrieben werden,

                      nein, als numerische Zeichenreferenz ginge es auch.

                      wenn Du ISO-8859-X benutzt.

                      Diese Einschränkung ist unsinnig.

                      ... wenn Du nicht utf-8 benutzt.

                      Das war jetzt eigentlich der Vater des Gedanken.
                      Ich hoffe, dass das jetzt passt :-)

                      Harzliche Grüße vom Berg
                      http://bergpost.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
                      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                      1. Hi,

                        Da muss das & überall als benanntes HTML-Zeichen geschrieben werden,
                        nein, als numerische Zeichenreferenz ginge es auch.
                        wenn Du ISO-8859-X benutzt.
                        Diese Einschränkung ist unsinnig.
                        ... wenn Du nicht utf-8 benutzt.

                        Diese Einschränkung ist genauso unsinnig.

                        & muß nicht wegen der gewählten Zeichen-Codierung maskiert werden, sondern weil es in HTML (bzw. SGML/XML) eine Sonderbedeutung hat (Einleitung einer numerischen/benannten Zeichenreferenz), die es an dieser Stelle (Parameter-Trennung in der URL) nicht haben soll.

                        Das war jetzt eigentlich der Vater des Gedanken.

                        Der Vater leidet wohl an Alzheimer ;-)

                        Ich hoffe, dass das jetzt passt :-)

                        Nö.

                        cu,
                        Andreas

                        --
                        Warum nennt sich Andreas hier MudGuard?
                        O o ostern ...
                        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                        1. Hello,

                          Der Vater leidet wohl an Alzheimer ;-)

                          Was war das doch gleich?

                          Harzliche Grüße vom Berg
                          http://bergpost.annerschbarrich.de

                          Tom

                          --
                          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                          Nur selber lernen macht schlau
                          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                2. Moin!

                  <tr><td height="670" bgcolor="#DBFF91" align="center" valign="top"><br><br><a name="bild"></a>

                  Dieser Anker enthält keinen Inhalt. Das verursacht nach meiner Erinnerung immer Probleme in Browsern. Sorge dafür, dass innerhalb des <a> was steht, dann sollte sich die Situation bessern.

                  - Sven Rautenberg

                  --
                  "Love your nation - respect the others."