[php] waarde achter de # uitlezen

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dit klinkt echt heel basic, maar ik wil met php de waarde achter de # uitlezen

bij www.sitenaam.nl/bestand.php?id=132&anders=iets#midden

dan wil ik dus achter die #midden komen.

heb gezocht hier, maar kon niets vinden.

het is niet te achterhalen met:

$REQUEST_URI
$PHP_SELF
$QUERY_STRING
enz...

en zelfs niet in de HTTP request headers, erg vreemd maar waar.

Acties:
  • 0 Henk 'm!

Verwijderd

Met een reguliere expressie??

zie preg_match()

[ Voor 63% gewijzigd door Verwijderd op 06-01-2004 08:20 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

wat moet je in PHP eigenlijk met de hash doen? Dat is puur een clientside besturingstechniek. Je kan 'm clientside wel met javascript uitvragen (window.location.hash) en als een requestvar meesturen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Ik kan het zelf nu even niet testen, maar ik kan me toch heel goed voorstellen dat $REQUEST_URI de gehele string binnensleept. Als je zoiets doet:
PHP:
1
$parts = explode ("#", $REQUEST_URI);

Dan is in theorie $parts[1] wat je nodig hebt.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 06 januari 2004 @ 09:31:
Ik kan het zelf nu even niet testen, maar ik kan me toch heel goed voorstellen dat $REQUEST_URI de gehele string binnensleept. Als je zoiets doet:
PHP:
1
$parts = explode ("#", $REQUEST_URI);

Dan is in theorie $parts[1] wat je nodig hebt.
wtf is $REQUEST_URI :? ;) :+

maar die waarde achter de # wordt simpelweg niet meegestuurd door de browser, het hoort niet bij de request.

[ Voor 9% gewijzigd door Erkens op 06-01-2004 09:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Die # wordt toch gebruikt om anchors aan te geven binnen een document?! Clientside iets dus..

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

De anchor wordt niet meegegeven via de request naar de http server.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • darkrain
  • Registratie: Augustus 2001
  • Laatst online: 21:56

darkrain

Moderator Discord

Geniet

Tweakers Discord


Acties:
  • 0 Henk 'm!

  • Cavalera125
  • Registratie: December 2003
  • Laatst online: 21-09 11:15
crisp schreef op 06 januari 2004 @ 08:44:
wat moet je in PHP eigenlijk met de hash doen? Dat is puur een clientside besturingstechniek. Je kan 'm clientside wel met javascript uitvragen (window.location.hash) en als een requestvar meesturen.
Als je er in php iets mee wilt doen, bijvoorbeeld opslaan in database ofzo, dan zou ik hem met javascript uitlezen idd. En dan via een <img> aanroep, zoiets:
code:
1
document.write('[img]"bewerking.php?var="'[/img]');

En dan bewerking.php een transparante gif terug laten sturen van 1 bit ofzo nadat je je bewerking hebt gedaan.

Het ligt er dan aan wat je ermee wil doen in php.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Waar wil je dat voor hebben dan? Kun je niet gewoon beter een GET variabel gebruiken?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Het is onmogelijk om van een request de anchor (het gedeelte achter de #) te bepalen, omdat het niet naar de server gestuurd wordt. Het anchor is puur een client-side ding, dat je hooguit met javascript zou kunnen bepalen.

Je geeft trouwens zelf al het antwoord:
het is niet te achterhalen met:

$REQUEST_URI
$PHP_SELF
$QUERY_STRING
enz...

en zelfs niet in de HTTP request headers, erg vreemd maar waar.
Wat niet in de headers staat kan PHP niet achterhalen.

[ Voor 38% gewijzigd door kvdveer op 06-01-2004 11:33 ]

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kvdveer schreef op 06 januari 2004 @ 11:32:
Het is onmogelijk om van een request de anchor (het gedeelte achter de #) te bepalen, omdat het niet naar de server gestuurd wordt. Het anchor is puur een client-side ding, dat je hooguit met javascript zou kunnen bepalen.

Je geeft trouwens zelf al het antwoord:

[...]

Wat niet in de headers staat kan PHP niet achterhalen.
oke, dat wou ik dus weten..

vind het eigelijk wel raar dat het niet met die headers wordt meegezonden, maargoed.

Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Verwijderd schreef op 07 januari 2004 @ 23:24:
[...]


oke, dat wou ik dus weten..

vind het eigelijk wel raar dat het niet met die headers wordt meegezonden, maargoed.
Nix raar hoor... Het hoort er niet. Javascript variabelen worden net zo goed niet meegestuurd.
Zoals eerder gezegd is de hash puur een clientside besturingstechniek. (bedenk dat URI's ontworpen zijn toen nog niemand van serverside scripting had gehoord...)

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Die vergelijking gaat natuurlijk niet helemaal op... JavaScript variabelen staan ook niet in een URL en de anchor wel. Strict genomen de anchor ook niet, en daar zit 't 'm in. Het HTTP protocol schrijft voor dat er een URL in de request header moet staan, en de #anchor komt nu eenmaal niet voor in de URL specificatie.

Ik moet zeggen dat ik het ook niet erg logisch vind dat de anchor niet opgenomen is in de URL specificatie, ongeacht of de server er iets mee zou moeten doen of niet. Hij wordt toch gebruikt? Overigens heeft Apache er (kennelijk) ook geen enkel probleem mee als de browser het mee zou sturen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
echo '<pre>';
$errno = false;
$errstr = false;
$fd = fsockopen ( 'localhost', 80, $errno, $errstr, 30 );

if ( !$fd ) {
   echo $errno, ": ", $errstr;
   exit();
} else {
   $request = "GET /dump-all.php#anchor HTTP/1.1\r\n"
                 . "Connection: Close\r\n"
                 . "Host: localhost\r\n\r\n";
   echo '<h1>Sending request:</h1>';
   echo '<blockquote>';
   echo htmlentities ( $request );
   echo '</blockquote>';
   fwrite ( $fd, $request );
   echo '<h1>Receiving response:</h1>';
   echo '<blockquote>';
   while ( $str = fread ( $fd, 4096 ) ) {
      echo htmlentities ( $str );
   }
   echo '</blockquote>';
   fclose ( $fd );
}
echo '</pre>';
?>


Geeft in die dump-all (welke o.a. $_SERVER dumpt) toch
code:
1
    [REQUEST_URI] => /dump-all.php#anchor


Magoed, het jammere is dus dat geen enkele browser dat doet, dus je hebt gewoon pech :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1