Wat achter de # staat uit de URL halen.

Status
Niet open voor verdere reacties.

Mr Wolf

Gebruiker
Lid geworden
27 okt 2009
Berichten
107
Hallo allemaal,

Is het mogelijk om met PHP uit een URL te halen wat achter de # staat?
Dus "http://kees.nl/#hihi" wordt "hihi"

Mr. Wolf
 
Je kunt met $_GET wel informatie halen uit een url, maar dan wel op een iets andere manier..

Stel je hebt een url kees.nl?waarde=hallo, dan kun je hallo er wel uithalen, maar niet achter een hekje volgens mij.

Wat wil je precies ermee doen?
 
Kan wel, denk ik. Waarom is meer de vraag. Over het algemeen als je in PHP bezig gaat wil je dingen hebben achter het vraagteken, dat zijn PHP variabelen. Het hekje is voor lokale anchors; oftewel om naar een bepaald deel van de pagina te springen.
 
Ik wil een site maken met de volgende structuur:

index.php voor als er JavaScript is.
p.php voor als er geen JavaScript is.

Als je dan naar index.php#info gaat, en je hebt js dan zie je de pagina. Als je dan naar een andere pagina gaat, wordt die via Ajax geladen, en er komt dan bijv. index.php#help in de adresbar te staan. Als naar p/info gaat, en je hebt wel javascript, dan stuurt javascript je door naar index.php#info. Maar als je naar index.php#info gaat, en je hebt geen javascript, staat wordt je doorgestuurd naar p/info. Dat wil ik zo doen:
HTML:
<noscript>
		<meta http-equiv="refresh" content="0;URL=<?php echo $baseUrl.'p/'.$pg; ?>" />
	</noscript>

maar dan moet ik dus weten wat er achter de # staat in de URL.
 
Hm, het lijkt niet in de $_SERVER te staan. Denk dat je het iets anders op zult moeten lossen, lijkt er niet op dat dat deel meegestuurd wordt naar de webserver. Je kunt eventueel gebruik maken van het ? alsnog, met een beetje wijzigingen, dat is de standaard manier om variabelen naar PHP te sturen.
 
Iets van:

PHP:
<?php

function show_fragment_from_url($url) {

	// Url "parsen"
	$urlarray = parse_url($url);

	// fragment in $newurl stoppen
	$fragment = $urlarray['fragment'];

	// Url teruggeven
	return $fragment;

}

// geeft terug: fragment
echo show_fragment_from_url('http://www.host.net/path.php?query=query#fragment');

?>

Niet getest.
 
Laatst bewerkt:
Iets van:

PHP:
<?php

function show_fragment_from_url($url) {

	// Url "parsen"
	$urlarray = parse_url($url);

	// fragment in $newurl stoppen
	$fragment = $urlarray['fragment'];

	// Url teruggeven
	return $fragment;

}

// geeft terug: fragment
echo show_fragment_from_url('http://www.host.net/path.php?query=query#fragment');

?>

Niet getest.
Dat kon ik ook wel bedenken. Maar hoe krijg ik dan die parameter? Ik moet dus de url weten, en die staat niet in de server-array.
 
Auw... Dat is jammer! Dat hoort niet bij php, aangezien het gedeelte achter het hekje helemaal niet wordt meegezonden!

Vraag nog maar eens in het javascript/ajax gedeelte, want ik heb zelf geen verstand van js/ajax ;)

Ik heb wel laatst een script geschreven waarmee je de rest van de url kunt krijgen:
PHP:
<?php

function geturl($www=FALSE) {

	// Check if HTTPS is on, if true, $makeurl[0] is http://, else, $makeurl[0] is https://
	if($_SERVER['HTTPS'] == 'on') {
		$makeurl[0] = 'https://';
	} else {
		$makeurl[0] = 'http://';
	}

	// Check host, replace www
	if(ereg('www', $_SERVER['HTTP_HOST'])) {
		if($www) {
			$makeurl[1] = $_SERVER['HTTP_HOST'];
		} else {
			$makeurl[1] = str_replace('www.', '', $_SERVER['HTTP_HOST']);
		}
	} else {
		if($www) {
			$makeurl[1] = 'www.' . $_SERVER['HTTP_HOST'];
		} else {
			$makeurl[1] = $_SERVER['HTTP_HOST'];
		}
	}

	// Get script name
	$makeurl[2] = $_SERVER['PHP_SELF'];


	// Load params
	$i = 0;
	foreach($_GET as $getname => $getcontent) {
		if($i == 0) {
			$makeurl[3] = '?' . $getname . '=' . $getcontent;
		} else {
			$makeurl[3] = $makeurl[3] . '&' . $getname . '=' . $getcontent;
		}

		$i++;
	}

	// The parts come together
	$url = $makeurl[0] . $makeurl[1] . $makeurl[2] . $makeurl[3];

	// Return result
	return $url;
}

// Example: http://www.example.com/geturl.php?page=page&fun=fun#good
// gives: http://www.example.com/geturl.php?page=page&fun=fun
echo geturl();

?>

EDIT: Kan iemand dit script hierboven trouwens even testen op een domein? Ik heb alleen men eigen server ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan