php obține toate variabilele url (Programare, Php, Obține)

utilizator962449 a intrebat.

Încerc să fac link-uri care să includă variabilele _GET curente.

Exemplu de link: <a href="?page=2">Page 2</a>

URL-ul curent este: http://example.com/test.php?id=2&a=1

Deci, dacă cineva dă click pe link-ul de la pagina 2, va fi dus la:http://example.com/test.php?id=2&a=1&pagina=2

În prezent, dacă dau clic pe linkul de la pagina 2, vor ajunge la:http://example.com/test.php?page=2

După cum puteți vedea, am nevoie de o modalitate de a obține variabilele _GET curente din url și de a le adăuga la link. Sfaturi?

5 răspunsuri
octern

Intrarea superglobală $_SERVER['QUERY_STRING'] are șirul de interogare în ea. Ai putea să o adaugi la orice altă legătură.

actualizare: Răspunsul alternativ de pe această pagină care utilizează http_build_query este mai bun, deoarece vă permite să adăugați noi variabile la șirul de interogare fără a vă îngrijora cu privire la ?s și altele. Dar voi lăsa acest lucru aici pentru că am vrut să menționez că puteți accesa șirul de interogare literal care se află în adresa curentă.

Comentarii

  • Știi cumva cum să obții și pagina php curentă? de exemplu, dacă adresa este exemplu.com/test/page.php ar obține pagina.php într-o variabilă. –  > Por user962449.
  • Este o combinație între $_SERVER[‘SERVER_NAME’]] și $_SERVER[‘REQUEST_URI’]]. Consultați documentația pentru [$_SERVER](php.net/manual/en/reserved.variables.server.php); este groovy, deși nu este cel mai ușor de înțeles la prima vedere. De asemenea, puteți învăța multe rulând comanda print_r($_SERVER). Amintiți-vă doar să nu o lăsați accesibilă pe site-ul dvs. când ați terminat! –  > Por octern.
  • Ce este „răspunsul colonelului”? Nu găsesc niciun colonel pe această pagină. Cred că ori s-a schimbat numele de utilizator, ori răspunsul la care te referi a fost eliminat. –  > Por auco.
  • Numele utilizatorului este în prezent „Bunul tău simț”. La momentul respectiv avea și o reputație de peste 100k, care acum a fost setată permanent la 1. Nu am idee care este povestea acolo. –  > Por octern.
  • Am primit problema că $_SERVER['QUERY_STRING'] include părți ÎNAINTE DE ?. Ca în localhost/a/b/file.php?test=test2&a=b obțin b/file.php?test=test2&a=b, , nici măcar întregul uri al cererii. –  > Por Bitterblue.
Bunul tău simț
$new_query_string = http_build_query(array_merge($_GET,array('page' => 2)));

Shankar Damodaran

Utilizați @extract($_GET). Astfel, le puteți accesa direct ca variabile.

Comentarii

  • Nu folosiți niciodată extract pe date nesigure. $_GET IS date nesigure. php.net/extract –  > Por Tom.
edCoder

Încercați acest lucru vă poate ajuta……

function get_all_get()
{
        $output = "?"; 
        $firstRun = true; 
        foreach($_GET as $key=>$val) { 
        if($key != $parameter) { 
            if(!$firstRun) { 
                $output .= "&"; 
            } else { 
                $firstRun = false; 
            } 
            $output .= $key."=".$val;
         } 
    } 

    return $output;
}   

Szél Lajos

În ceea ce privește întrebarea de mai sus cum să incluzi și numele fișierului php în url, folosind metoda perfectă a lui Your Common Sense și adăugând un semn de întrebare a funcționat pentru mine:

echo "<a href='?".$url."'>link</a>"

Tags:,