2016-04-11 24 views
0

Örnek:Tek bir GET parametresini PHP'deki bir URL'den ayırmanın en hızlı yolu nedir?

kullanıcı aramaları:

http://www.example.com/?mysecret=hello&second=world&third=bar 

"mysecret" doğru ise bir çerez ayarlanır ve kullanıcı yönlendirilir olacaktır:

http://www.example.com/?second=world&third=bar 

Kod örnek:

if(is_page(MY_LOCKED_PAGE)) { 

if($_COOKIE["unlocked"]=="y") { 
    // proceed 
} else if(isset($_GET["mysecret"])) { 
    setcookie('unlocked','y',time()+3600*24*180,'/',"",false,true); 

    // strip mysecret from the URL 

    // redirect to the original URL without the get parameter "mysecret", but keeping other get parameters 

} else { 
    // redirect 404 
} 
} 

Eksik kodları doldurun - en hızlı şeritleme yöntemi nedir Parametre mysecret ve aynı url yönlendirmek? Burada

unset($_GET['mysecret']); 
$url = http_build_query($_GET); 
// redirect 
header("Location: {$url}"); 

Ve bir Example açıklanmıştır:

+0

'başlığı ("Konum: ikinci = dünyayı & üçüncü = bar ./?");'? – Jek

+0

"unset ($ _ GET [" mysecret "])' öğesini kaldırmak için kullanın. –

+0

Ofc. ama diğer parametrelerin ne olduğunu bilmediğimi varsayalım. Soru, URL'yi bölmenin ve yeniden göndermenin en hızlı yoludur. – Blackbam

cevap

3

Sadece basit unset() senin mysecret ve koşum http_build_query() süper küresel $_GET yeni url oluşturmak için. benim için çalıştı

+0

deneyin Temelde doğru ancak benim için çalıştı tam cevap gönderdi (belki daha kısa bir çözüm mümkündür). – Blackbam

0

tam cevap olarak aşağıdaki gibidir:

unset($_GET['mysecret']); 

    $build = http_build_query($_GET); 

    $uri_parts = explode('?', $_SERVER['REQUEST_URI'], 2); 

    $prot = "http://"; 

    if(isset($_SERVER['HTTPS'])) { 
     if ($_SERVER['HTTPS'] == "on") { 
      $prot = "https://"; 
     } 
    } 

    $url = $prot . $_SERVER['HTTP_HOST'] . $uri_parts[0] . "?" . $build; 

    // redirect 
    header("Location: {$url}"); die; 
İlgili konular