- Home
- Categorie
- Coding e Sistemistica
- PHP
- Intercettare l'URL dopo il Cancelletto (#)
-
-
@Sups said:
C'è una funzione di PHP chiamata ParseURL.
http://it.php.net/function.parse-url
Ciao!
Si, la conoscevo.
Solo che questa funzione serve per parsare una URL, non per recuperare la URL.Grazie lo stesso
@Jeeves said:
Dovresti vedere nella documentazione ufficiale di $_SERVER o $_ENV se trovi quello che ti serve
Ciao Jeeves e grazie del suggerimento.
Ho provato a cercare ma purtroppo non ho trovato nulla che faccia quello che mi serve.Avevo provato a recuperare questa informazione anche con l'.htaccess
[php]RewriteRule ^(.).html#(.)$ prova2.php?uno=$1&due=$2 [/php]Ma purtroppo non me lo prende.
Ci possono essere altre strade?
-
puoi provare con un explod.
Così dividi l'url in due: ciò che c'è prima del cancelletto e ciò che c'è dopo.
Però come è stato detto prima bisogna vedere se l'url arriva oppure no al server, prova...:)
-
@Inverter said:
puoi provare con un explod.
Così dividi l'url in due: ciò che c'è prima del cancelletto e ciò che c'è dopo.
Però come è stato detto prima bisogna vedere se l'url arriva oppure no al server, prova...:)
Ciao Inverter, il mio problema non è suddividere l'URL, ma proprio trovare quest'ultima quando contiene il cancelletto....
Ti viene in mente qualcosa a questo scopo?
-
ah, ora ho capito.
purtroppo la rete conferma il mio pensiero: se guardi in giro su google vedi altri post con la tua stessa domanda , ma tutti dicono che non si può fare tramite php
-
Allora il cancelletto dopo l'url è il nome del segnalibro della pagina :D, quelli <a name="nome segnalibro"></a>, ma funziona solo nel browser, perché è il browser che ti sposta nella stessa pagina senza rigenerarla...
Esempio, link a questo post: giorgiotave.it/forum/php-mysql/83227-intercettare-lurl-dopo-il-cancelletto.html#post514198
Infatti il cancelletto staSe hai realmente visto che è stato intercettato (hai detto al log del server), vedi se ti fa anche vedere la $var per fartelo vedere
-
adesso, non vorrei sbagliare, ma se ti serve far sapere al server in che posizione della pagina sei, potresti provare con un altro modo: in pratica potresti fare un doppio redirect.
In pratica potresti sostituire l'ancora con una variabile passata in get, quindi recuperi la variabile e la trasformi in ancora e successivamente reindirizzi l'utente verso la stessa ancora:
[PHP]
<!-- Ancora settata come variabile get-->
<a href="miapagina.php?anchor=articolo21">Articolo 21</a><?php
if (isset($_GET['anchor'])) //Controllo che sia settata l'ancora, altrimenti non reindirizzo l'utente
{
$anchor = $_GET['anchor'];/...
Qui puoi mettere altro codice php sapendo che il nome dell'ancora è contenuta nella variabile $anchor
.../header ("location: miapagina.php#".$anchor); //Reindirizzo l'utente verso l'ancora
}
?>
[/PHP]Poi non so cosa tu voglia fare e magari scopri che non ti serve neanche questo codice, però a questa ora sto un pò fuso
Ciao ciao
-
@Jeeves said:
Se hai realmente visto che è stato intercettato (hai detto al log del server), vedi se ti fa anche vedere la $var per fartelo vedere
I miei log dicono questo:
79.13.179.218 - - [18/Jun/2008:10:57:50 +0200] "GET /index_files/psy-psy-client.css HTTP/1.1" 200 2798 "http://www.psicologia-psicoterapia.it/master-corsi/ig-art-roma/corsi-teatroterapia-training-autogeno.html#bullismo-arteterapia-scolastica" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; it-it) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18"Oppure:
86.149.161.124 - - [18/Jun/2008:13:25:09 +0200] "GET /master-corsi/tftp/master-psicologia-giuridica-minorile-scolastica-milano.gif HTTP/1.1" 200 3038 "http://www.psicologia-psicoterapia.it/master-corsi/tftp/master-psicologia-giuridica-master-psicologia-scolastica-milano.html#disturbi-alimentari-immagine-corporea" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18"O anche:
72.14.193.67 - - [15/Jun/2008:10:00:08 +0200] "GET /master-corsi-psicologia-lavoro/modelli-comunicazione-pnl-milano.html#pnl-gestione-emozioni HTTP/1.1" 200 48200 "http://www.psicologia-psicoterapia.it/ipnosi.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)"La cosa strana è che dove compare il cancelletto sono quasi tutte macchine Apple....
Comunque dove la cerco la variabile?
-
@Inverter said:
adesso, non vorrei sbagliare, ma se ti serve far sapere al server in che posizione della pagina sei, potresti provare con un altro modo: in pratica potresti fare un doppio redirect.
Si, hai ragione, e questa è la mia alternativa.Solo che non mi piace inserire molti redirect....
Non vorrei che poi nel tempo mi crei problemi.In realtà non voglio sapere in quale posizione della pagina sono, ma lo voglio usare come tracciamento:
Se intercetto il "segnalibro" è come se passassi una variabile via GET senza per questo cambiare l'URL e quindi creare pagine duplicate (o utilizzare un 301)....Una figata insomma.
-
usa semplicemente i valori di $_SERVER che ti servono.
fatti un var_dump per vedere cosa contiene (o se usi Eclipse o Zend Studio, guardane semplicemente il contenuto), scegli ad esempio 'REQUEST_URI' e 'ORIG_PATH_INFO' e poi come ti hanno suggerito splitta col # come riferimento