Khi tiếp tục Adding Values to a Query String in a URL, tôi có hộp tìm kiếm sẽ thêm đối số bổ sung vào URL hiện tại.Vượt qua URL hiện tại khi gửi biểu mẫu
http://example.com/?s=original+new+arguments&fq=category
Mẫu mã trông như thế này:
<form id="FilterSearch" method="get" action="http://example.com/search_result.php">
đâu search_result.php chỉ là một trang mới, tôi tạo ra để phân tích nộp và chuyển hướng sử dụng các URL mới.
Làm cách nào để chuyển URL ban đầu tới search_result.php để tôi có thể thao tác URL?
EDIT # 1: Tôi đã thêm một đầu vào ẩn:
<?php $current_url = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>
<input type="hidden" name="current_url" value="<?php $current_url; ?>" />
<input name="send" id="send" type="submit" value="Search" />
đầu ra của tôi là chỉ thêm các đối số trang trình (search_result.php) và không phải là trang truy vấn dự định.
<?php
if (isset($_GET['send'])){
$searchField = urlencode($_GET['SearchField']);
$location = $_GET['current_url'];
$location = preg_replace($location, '/([?&]s=)([^&]+)/', '$1$2+'.$searchField);
header('Location: '.$location);
}
?>
Tôi đang truyền sai hoặc làm sai hoặc cả hai!
EDIT # 2: URL Output giống như:
http://example.com/wp-content/themes/child_theme/search_result.php?SearchField=newTerm¤t_url=www.example.com%2F%3Fs%3DoldTerm%26searchsubmit%3D&send=Search
EDIT # 3 Tôi lặp lại URL đầu ra và đó là chính xác. Tôi đã loại bỏ preg_match chỉ để xem liệu tôi có thể nhận được cùng một URL khi tôi xử lý biểu mẫu hay không. Thật thú vị, tôi nhận được một trang không tìm thấy. Tôi quyết định thêm http: // tiêu đề và nó làm việc:
header('Location: http://'.$location);
Vì vậy, do đó, tôi tin rằng điều duy nhất sai ở đây là preg_replace.
Dường như bạn cần thực hiện giá trị = " Php echo $ current_url;?>". Bạn cũng có thể sử dụng $ _SERVER ['HTTP_REFERER'] như dfsq gợi ý thay thế cho phương pháp này, nhưng nó không phải lúc nào cũng đáng tin cậy. –
không hoạt động:/ – AlxVallejo
Bạn có nhận được bất kỳ giá trị nào trong biến số vị trí $ của mình không? –