Pagina 1 di 1

php: nome file da url + riferimento ad ancora interna

Inviato: mar 21 nov 2006, 14:30
da giberg
Ciao

Ho bisogno di estrarre il nome di un file (pagina web) corrente comprensivo del riferimento ad un ancoraggio interno alla pagina stessa, tramite php...

Esempio:

/percorso/pagina.php#rif1
/percorso/pagina.php#rif2
ecc.


con basename($_SERVER["PHP_SELF"]) estraggo solo pagina.php .

C'è un modo per estrarre pagina.php#rif1?

Grazie

Inviato: mar 21 nov 2006, 16:01
da dapuzz
no perchè il link tramite "ancoraggio" non invoca il server, ma è interpretato solo via browser. Al massimo forse potrebbe essere possibile tramite javascript.

Inviato: mar 21 nov 2006, 16:16
da alessiodf
Se ti serve poi per fare un redirect piu' specifico nella pagina, e devi quindi passarlo ad una form, puoi usare com eti hanno detto JS.. altro non si puo' fare!

Inviato: mar 21 nov 2006, 18:33
da IceSlack
su firefox non funziona molto bene, in certi siti....

Inviato: mar 21 nov 2006, 19:33
da giberg
dapuzz ha scritto:no perchè il link tramite "ancoraggio" non invoca il server, ma è interpretato solo via browser.
Vero, non ci avevo pensato... :roll:
dapuzz ha scritto: Al massimo forse potrebbe essere possibile tramite javascript.
Non volevo usare javascript, visto che io stesso li blocco quando navigo...

In pratica ho un menù in php. In un array sono contenuti URL e descrizioni. Poi parte un ciclo e viene confrontato il basename della pagina corrente con il basename dell'URL. Se corrispondono allora compare anche un'immaginetta affianco al link attivo (che sarà visualizzato come testo senza <a href...>) se invece non corrispondono allora viene visualizzato il link normalmente.
Se sono link normali tutto funziona, se ci sono link con un riferimento interno alla pagina, del tipo pagina.php#rif, allora no.

Inviato: mar 21 nov 2006, 20:51
da aschenaz
giberg ha scritto:...
Se sono link normali tutto funziona, se ci sono link con un riferimento interno alla pagina, del tipo pagina.php#rif, allora no.
E non puoi splittare la stringa prima del #? Ad esempio con explode?

Inviato: mar 21 nov 2006, 21:06
da dapuzz
si, con ajax potresti fare follie facendoti ricaricare al volo la pagina php che genera il menu passandoci tu l'indirizzo corretto, ma come hai già detto non vuoi usare js, quindi niente ajax :P

Codice: Seleziona tutto

function live(url,idmenu,idspinner)
{
	var liveUrl = url;
	var preview = document.getElementById(idmenu);
	//var spinner = document.getElementById(idspinner);

	if (window.XMLHttpRequest) {
		liveReq = new XMLHttpRequest();
	}
	if (window.XMLHttpRequest) {
		// branch for IE/Windows ActiveX version
	}else if (window.ActiveXObject) {
		liveReq = new ActiveXObject("Microsoft.XMLHTTP");
	}	

	liveReq.onreadystatechange = function()
	{
		if (liveReq.readyState == 4 && (liveReq.status == 200 || liveReq.status == 304)) 
		{
			var testo = liveReq.responseText;
			preview.innerHTML = testo;
			//spinner.className = "spinner_hide";
		}
		//if (liveReq.readyState < 4 ) 
		//{
		//	spinner.className = "spinner_show";
		//}
	};
	// join them into a string.
	fields = get_address_data(); //Ritorna un array con i parametri da passare via post alla pagina che genera il menu
	var post = fields.join("&");
	liveReq.open("POST", liveUrl,true);
	liveReq.setRequestHeader('Content-Type',
    	'application/x-www-form-urlencoded');
	liveReq.send(post);
}

Inviato: mer 22 nov 2006, 10:34
da giberg
ninobi ha scritto:E non puoi splittare la stringa prima del #? Ad esempio con explode?
Sono andato a vedermi explode e split per capire (conosco ancora poco). Beh sì, così funzionerebbe, però considererebbe tutti i link a quella pagina come pagina attiva, quindi mi servirebbe a poco...