Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

Aflæs efter alt # anchor tegn i URL via PHP

Side 1 ud af 2 (19 indlæg)
Fra Nykøbing Falster
Tilmeldt 17. Jul 08
Indlæg ialt: 5907
Fra  Casper Schneidereit A/S Skrevet kl. 11:55
Hvor mange stjerner giver du? :

Det er en løsning jeg har forfulgt lidt for sjov. Jeg er 95% sikker på det ikke bliver måden jeg opbygger systemet på, men nu vil jeg alligevel gerne høre jeres input.

Problemstilling
I PHP vil jeg gerne aflæse det som kommer efter # (anchor) i en URL request. Så jeg f.eks i mit PHP script kan aflæse værdien #kattemad i denne request. produkter.php#kattemad. Det er ikke muligt direkte via PHP.

Workaround

1 ) JS kan aflæse værdien. JS smider det i en cookie.
2 ) PHP opbygger JS script, så JS script allerede aflæser værdien af cookien og sammenligner med nuværende anchor tag. Er den ikke ens reloader via siden.

Det giver et reload for hver sidevisning - men det virker. Problemet er, at browseren naturligvis ikke "forstår" den skal sende en ny request, når kun værdien efter # har ændret sig. Er du på siden produkter.php og der er følgende 3 links.

produkter.php#kattemad
produkter.php#hundemad
produkter.php#diverse

Når du klikker på dem vil siden ikke reloade, da broseren vil forsøge at linke hen til de rigtige steder på siden. Har i nogle input til, en cross-browser løsning hvor jeg kan tvinge den til at sende en ny request, selvom det kun er værdien efter # der er ændret? 

Tilmeldt 8. Nov 07
Indlæg ialt: 718
Skrevet kl. 12:00
Hvor mange stjerner giver du? :
Gennemsnit 5,0 stjerner givet af 2 person

Du bliver nok nødt til at lave noget Javascript igen. Noget ala; hvis anchor ændrer sig, så reload siden.

Fra Herning
Tilmeldt 21. Aug 09
Indlæg ialt: 842
Fra  Thissocks.dk Webbureauet Far & Søn Skrevet kl. 12:18
Hvor mange stjerner giver du? :

Casper Schneidereit:

Problemstilling
I PHP vil jeg gerne aflæse det som kommer efter # (anchor) i en URL request. Så jeg f.eks i mit PHP script kan aflæse værdien #kattemad i denne request. produkter.php#kattemad. Det er ikke muligt direkte via PHP.

 

Jeg bruger $_SERVER['HTTP_REFERER'] til at hente URL'en i PHP. Er det ikke en mulighed?

Fra Aarhus
Tilmeldt 6. Apr 11
Indlæg ialt: 486
Fra  Beneath » digital design Skrevet kl. 12:25
Hvor mange stjerner giver du? :

Ikke fordi jeg er den store php-haj... men er der ikke noget med "?"

produkter.php?pageid=kattemad fx..

:) Kim

Fra Nykøbing Falster
Tilmeldt 17. Jul 08
Indlæg ialt: 5907
Fra  Casper Schneidereit A/S Skrevet kl. 12:30
Hvor mange stjerner giver du? :

Kent Medom:
Jeg bruger $_SERVER['HTTP_REFERER'] til at hente URL'en i PHP. Er det ikke en mulighed?

Ikke den værdi som står efter #.

Fra Nykøbing Falster
Tilmeldt 17. Jul 08
Indlæg ialt: 5907
Fra  Casper Schneidereit A/S Skrevet kl. 12:31
Hvor mange stjerner giver du? :

Martin van de Belt:
Du bliver nok nødt til at lave noget Javascript igen. Noget ala; hvis anchor ændrer sig, så reload siden.

Tak for input. Det vil jeg prøve at lege lidt videre med. :-)!

Tilmeldt 28. Sep 07
Indlæg ialt: 1312
Skrevet kl. 12:33
Hvor mange stjerner giver du? :

Hej Casper

Kan det ikke løses med en regular expression? 

Det kræver stadig et request da PHP er et server side scripting sprog. Evt kunne du lave det med AJAX så requestet sker i baggrunden. 

Følgende regex skulle kunne aflæse anchor tagget (alt hvad der kommer efter #):

/([^#]*)#(.*)$/

Og du kan fx bruge det således:

<?php 
if(preg_match("/([^#]*)#(.*)$/", $_SERVER['HTTP_REFERER'], $request))
{
echo $request[1]; // udskriver anchor tagget
}
?>
Fra Nykøbing Falster
Tilmeldt 17. Jul 08
Indlæg ialt: 5907
Fra  Casper Schneidereit A/S Skrevet kl. 12:35
Hvor mange stjerner giver du? :

Kim Dolleris:

Ikke fordi jeg er den store php-haj... men er der ikke noget med "?"

produkter.php?pageid=kattemad fx..

Jo. Den kan jeg også sagtens aflæse via $_GET :-)! mens produkter.php?pageid=kattemad#hundemad . Her vil jeg ikke kunne aflæse hundemad.

Fra Nykøbing Falster
Tilmeldt 17. Jul 08
Indlæg ialt: 5907
Fra  Casper Schneidereit A/S Skrevet kl. 12:37
Hvor mange stjerner giver du? :

Kasper Gadensgaard:

Hej Casper

Kan det ikke løses med en regular expression? 

Problemet er ikke at trække værdien ud af en komplet URL (se også parse_url() ). Problemet er at $_SERVER['HTTP_REFERER'] ikke indeholder værdien af anchor. Den er kun tilgængelig fra klientsiden.

Tilmeldt 28. Sep 07
Indlæg ialt: 1312
Skrevet kl. 12:41
Hvor mange stjerner giver du? :

Edit: Du har ret. 

Jeg fandt denne, men det er sikkert også den du har brugt i forvejen.

http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/

Side 1 ud af 2 (19 indlæg)