php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12635 href="#botton" gives wrong url
Submitted: 2001-08-07 19:00 UTC Modified: 2001-08-16 16:26 UTC
From: lukas_schell at bluewin dot ch Assigned:
Status: Not a bug Package: Session related
PHP Version: 4.0.4 OS: ?
Private report: No CVE-ID: None
 [2001-08-07 19:00 UTC] lukas_schell at bluewin dot ch
when using a session together with an internal link, say :

  <a href="#bottom">go to bottom</a>

the resulting url is say :

  http://www.tre.dds/programs/?session_id=3l344l4j3l#bottom

which directs to :
  http://www.tre.dds/programs
instead of say
  http://www.tre.dds/programs/mypage.php#bottom?session_id= 3l344l4j3l

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-07 19:05 UTC] lukas_schell at bluewin dot ch
When using a session together with an internal link, say :

                  <a href="#bottom">go to bottom</a>


the resulting url is say :

                  http://www.tre.dds/programs/?session_id=3l344l4j3l#bottom

which directs to :
 http://www.tre.dds/programs
instead of say                http://www.tre.dds/programs/mypage.php#bottom
 [2001-08-07 19:16 UTC] jeroen@php.net
URL's matching "^#" should be left alone by the transparent session-id-adder, since they are internal to that page.

Workaround: Write href="/programs/mypage.php#bottom"
 [2001-08-09 17:13 UTC] lukas_schell at bluewin dot ch
The workaround
  href="/programs/mypage.php#bottom"
does not work, for 
  session_id=?
is inserted between mypage.php and #bottom

This works :
  <script language="JavaScript">
    var str1="<a hr";
    var str2="ef";
    document.write(str1+str2+"='#REPLY'>go to bottom</a>");
  </script>
(Writing "href" in one string makes php transform the address)
But when reloading the page with the reload button, the get arguments are added once again behind the address of the link. The link still works, but the page is reloaded again !
 [2001-08-09 17:32 UTC] jeroen@php.net
It should, or am I wrong?

the ?-part is of the page-part of it, and the # is for the section.

Doesn't ? go BEFORE the # in HTTP-specs? Can someone verify that, since I 'forgot' the RFC-nr ;-)

Since PHP is inserting it between, I'm quite sure it should go before, otherwise the person who wrote it wouldn't have taken the trouble to do so :)

Does your browser have problems with that?
 [2001-08-11 17:53 UTC] lukas_schell at bluewin dot ch
Try the following file:
  http://webcour.swisszone.ch/a/essais/session.php?f=1

 [2001-08-12 18:11 UTC] jeroen@php.net
http://webcour.swisszone.ch/a/essais/session.php?f=1

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 


--------------------------------------------------------------------------------

Apache/1.3.14 Server at www.webcour.swisszone.ch Port 80
 [2001-08-12 19:59 UTC] jeroen@php.net
Works correctly (that "#bottom" is left alone) since oktober 2000 (version 1.17 of ext/standard/url_scanner_ex.re)
That means it worked since 4.0.4 exactly. (I only tested 4.0.7, so I'm not 100% certain)

And I was correct that # came _after_ the ?, so there's no bug (anymore).
 [2001-08-13 15:45 UTC] lukas_schell at bluewin dot ch
Sorry, I put protection 777, but that was too much. Now it should work :

http://webcour.swisszone.ch/a/essais/session.php?f=1

 [2001-08-15 08:26 UTC] lukas_schell at bluewin dot ch
You are right that there is no bug so far as concerns the position of "#bottom". I tried with Explorer 4.5: link no 1, 2 and 4 are OK, but still the page is reloaded. With Netscape 4.6 the first link does not work. Maybe it also depends on the reload preferences of the navigator. So all this is rather tricky, isn't it ?
But what about the following suggestion: php could refrain from inserting the session_id if the link contains only an anchor (like: href="#bottom"), because this means that the page is not to be reload.
 [2001-08-15 14:37 UTC] jeroen@php.net
"php could refrain from inserting the session_id if the link contains only an anchor (like: href="#bottom"), because this means that the page is not to be reload."

But that's exactly what it does (as of 4.0.4, according to CVS, tested that it works right with 4.0.4pl1)! Therefore, there is no bug in PHP>=404, see the html-source! (there was a bug, however, in PHP<=403

And PHP has nothing to do with how browsers handle things...
 [2001-08-16 16:26 UTC] lukas_schell at bluewin dot ch
Thank you very much ! I'm sorry to have bothered you with my problem. I was sure I was working with php 4.0.4, but it actually was 4.0.3 and of course it didn't work properly. 
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 13:01:30 2024 UTC