anker zusammen mit get variablen
planlos
- php
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
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
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.
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
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
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.
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
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>
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 = '&'
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
Ok, danke,
also die & hab ich schonmal zum testen alle als & 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.
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
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!
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
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
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
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
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
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
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
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
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
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
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
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
Hello,
Der Vater leidet wohl an Alzheimer ;-)
Was war das doch gleich?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
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