Ottenere i Parametri URL dal referer

4 feb 2013, 14:43:13
Visualizzazioni: 20.3K
Voti: 1

Non sono sicuro al 100% se questa sia una domanda PHP o specificamente WordPress...

Sto implementando la WordPress Settings API con una pagina di impostazioni a schede. Ho aggiunto un pulsante 'reset tab', ma poiché la validazione viene eseguita su una pagina separata (options.php) non riesco a capire in quale scheda mi trovo - senza aggiungere la scheda come campo nascosto, cosa che vorrei evitare.

Ho trovato la funzione wp_get_referer(), ma questa mi restituisce l'URL completo - non sono sicuro di come estrarre il parametro tab=tab1 come variabile.

Aggiornamento - Risposta:

$url = parse_url(wp_get_referer());
parse_str($url['query'], $path);
$tab = $path['tab'];

Come indicato nelle risposte, è poi necessaria una validazione.

2
Commenti

Stai facendo questo senza Javascript?

s_ha_dum s_ha_dum
4 feb 2013 16:48:09

Sì.

Il mio modulo si trova su wordpress/wp-admin/options-general.php?page=967slug_settings_page&tab=tab3 (nota il parametro tab) La settings_API poi invia il modulo a options.php (Wordpress core) che poi chiama una funzione di validazione (scritta da me). Sto cercando di ottenere il valore del parametro tab all'interno della funzione di validazione.

La funzione wordpress wp_get_referer() mi restituisce l'URL completo (URI?) - esattamente come sopra - ma non sono sicuro di come estrarre il valore di 'tab' da quello.

Jamie Jamie
4 feb 2013 18:41:09
Tutte le risposte alla domanda 1
2

Se tab=tab è presente nell'URL allora:

global $_GET;
var_dump($_GET); // solo per debug; Dovresti essere in grado di vedere ciò che ti serve.

Questo è PHP puro. Se hai davvero bisogno di elaborare quella stringa (non so perché dovresti farlo) usa parse_url e poi utilizza parse_str sulla parte query di essa.

$path = parse_url($url);
$path = parse_str($path, $output);
var_dump($output); // ancora, solo per debug

Per completezza, per favore non utilizzare nessuno di quei valori senza validarli.

Ho frainteso qualcosa?

4 feb 2013 18:59:56
Commenti

Sfortunatamente, non posso usare $_GET poiché l'URL da cui sto cercando di ottenere il parametro è il referer, non l'URL corrente.

Tuttavia, dato che posso accedere al referer attraverso la funzione wp_get_referer, penso di poter mettere insieme qualcosa che utilizzi parse_url e parse_str per ottenere il parametro della tab.

Grazie per l'aiuto

Jamie Jamie
4 feb 2013 19:23:32

Giusto per chiudere correttamente questa questione, ho sperimentato con i tuoi suggerimenti per trovare una soluzione, che ho aggiunto alla mia domanda originale.

@s_ha_dum - grazie per l'aiuto.

Jamie Jamie
5 feb 2013 14:27:11