Obține parametrii URL din referer

4 feb. 2013, 14:43:13
Vizualizări: 20.3K
Voturi: 1

Nu sunt 100% sigur dacă aceasta se clasifică drept o întrebare PHP sau este specific WordPress...

Implementez WordPress Settings API cu o pagină de setări cu tab-uri. Am adăugat un buton 'reset tab', dar deoarece validarea se face pe o pagină separată (options.php), nu pot determina pe care tab mă aflu - fără să adaug tab-ul ca un câmp ascuns, lucru pe care vreau să-l evit.

Am găsit funcția wp_get_referer(), dar aceasta îmi oferă URL-ul complet - nu sunt sigur cum să extrag tab=tab1 ca variabilă.

Update - Răspuns:

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

După cum s-a menționat în răspunsuri, este necesară apoi o validare.

2
Comentarii

Faci asta fără Javascript?

s_ha_dum s_ha_dum
4 feb. 2013 16:48:09

Da.

Formularul meu se află la wordpress/wp-admin/options-general.php?page=967slug_settings_page&tab=tab3 (observă parametrul tab) Settings_API trimite apoi formularul către options.php (nucleul WordPress) care apelează o funcție de validare (scrisă de mine). Încerc să obțin valoarea parametrului tab în cadrul funcției de validare.

Funcția WordPress wp_get_referer() îmi returnează URL-ul complet (URI?) - exact ca mai sus - dar nu sunt sigur cum să extrag valoarea lui 'tab' din aceasta.

Jamie Jamie
4 feb. 2013 18:41:09
Toate răspunsurile la întrebare 1
2

Dacă tab=tab se află în URL atunci:

global $_GET;
var_dump($_GET); // doar pentru depanare; Ar trebui să poți vedea ce ai nevoie.

Acesta este PHP pur. Dacă chiar trebuie să procesezi acel șir (nu știu de ce ai face asta) folosește parse_url apoi utilizează parse_str pe partea de query a acestuia.

$path = parse_url($url);
$path = parse_str($path, $output);
var_dump($output); // din nou, doar pentru depanare

Pentru completitudine, te rog să nu folosești niciuna dintre acele valori fără validarea lor.

Am înțeles greșit?

4 feb. 2013 18:59:56
Comentarii

Din păcate, nu pot folosi $_GET deoarece URL-ul din care încerc să extrag parametrul este referer-ul, nu URL-ul curent.

Cu toate acestea, având în vedere că pot accesa referer-ul prin funcția wp_get_referer, cred că pot construi ceva care să folosească parse_url și parse_str pentru a obține parametrul tab.

Mulțumesc pentru ajutor

Jamie Jamie
4 feb. 2013 19:23:32

Doar pentru a încheia acest subiect corect, am experimentat cu sugestiile voastre pentru a găsi o soluție, pe care am adăugat-o la întrebarea mea inițială.

@s_ha_dum - mulțumesc pentru ajutor.

Jamie Jamie
5 feb. 2013 14:27:11