นี่คือฟังก์ชั่นของฉันเพื่อสร้างชิ้นส่วนของสตริงการสืบค้นของ REFERRER
หากหน้าการโทรมีข้อความค้นหาในURLของตัวเองอยู่แล้วและคุณต้องกลับไปที่หน้านั้นและต้องการส่งกลับบางส่วนของ$_GET
vars นั้น ๆ ไม่ใช่ทั้งหมด(เช่นหมายเลขหน้า)
ตัวอย่าง: สตริงแบบสอบถามของเล่นที่ได้รับการ?foo=1&bar=2&baz=3
เรียกร้องrefererQueryString( 'foo' , 'baz' )
ผลตอบแทนfoo=1&baz=3"
:
function refererQueryString(/* var args */) {
//Return empty string if no referer or no $_GET vars in referer available:
if (!isset($_SERVER['HTTP_REFERER']) ||
empty( $_SERVER['HTTP_REFERER']) ||
empty(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY ))) {
return '';
}
//Get URL query of referer (something like "threadID=7&page=8")
$refererQueryString = parse_url(urldecode($_SERVER['HTTP_REFERER']), PHP_URL_QUERY);
//Which values do you want to extract? (You passed their names as variables.)
$args = func_get_args();
//Get '[key=name]' strings out of referer's URL:
$pairs = explode('&',$refererQueryString);
//String you will return later:
$return = '';
//Analyze retrieved strings and look for the ones of interest:
foreach ($pairs as $pair) {
$keyVal = explode('=',$pair);
$key = &$keyVal[0];
$val = urlencode($keyVal[1]);
//If you passed the name as arg, attach current pair to return string:
if(in_array($key,$args)) {
$return .= '&'. $key . '=' .$val;
}
}
//Here are your returned 'key=value' pairs glued together with "&":
return ltrim($return,'&');
}
//If your referer was 'page.php?foo=1&bar=2&baz=3'
//and you want to header() back to 'page.php?foo=1&baz=3'
//(no 'bar', only foo and baz), then apply:
header('Location: page.php?'.refererQueryString('foo','baz'));