2011-11-15 58 views
23

Làm cách nào để chuyển hướng đến cùng một trang bằng cách sử dụng PHP?Cách chuyển hướng đến cùng một trang trong PHP

Ví dụ, tại địa phương địa chỉ web của tôi là:

http://localhost/myweb/index.php 

Làm thế nào tôi có thể chuyển hướng trong trang web của tôi đến một trang khác, nói:

header("Location: clients.php"); 

Tôi biết điều này có thể sai, nhưng làm tôi thực sự cần phải đặt toàn bộ điều? Điều gì sẽ xảy ra nếu sau này không phải là http://localhost/?

Có cách nào để làm điều gì đó như thế này không? Ngoài ra, tôi có rất nhiều mã và sau đó ở cuối sau khi nó được thực hiện xử lý một số mã ... Tôi đang cố gắng chuyển hướng bằng cách sử dụng đó. Ổn chứ?

+0

thể trùng lặp của [Làm thế nào để thực hiện một chuyển hướng trong PHP?] (Http: //stackoverflow.com/questions/768431/how-to-make-a-redirect-in-php) –

+0

Điều này phải làm gì với "cùng một trang"? –

+0

Đối với "cùng một trang" tôi thấy câu trả lời ở đây là mạnh nhất: http://stackoverflow.com/questions/4221116/php-refresh-current-page – eselk

Trả lời

9

Có một số $_SERVER (docs) thuộc tính khác nhau mà trả về thông tin trang hiện tại, nhưng phương pháp ưa thích của tôi là sử dụng $_SERVER['HTTP_HOST']:

header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location); 

nơi $location là con đường sau tên miền, bắt đầu với /.

+0

cảm ơn tuyệt vời – user710502

+0

Tôi không chắc tại sao nó không chuyển hướng, có lẽ tôi đã làm sai? $ location = '/index.php'; tiêu đề ("Vị trí:". "Http: //". $ _SERVER ['HTTP_HOST'].$ location); – user710502

+1

Để gỡ lỗi, chỉ cần xuất chuỗi đó bằng 'echo' thay vì' header'. Nếu nó là chính xác, thì cái gì khác là sai (tiêu đề phải là ** đầu tiên ** đầu ra trên trang, ví dụ.) – Nicole

60

phương pháp ưa thích của tôi cho tải lại cùng một trang là $ _SERVER [ 'PHP_SELF']

header('Location: '.$_SERVER['PHP_SELF']); 
die; 

Đừng quên chết hoặc thoát sau khi tiêu đề của bạn();

Edit: (Cảm ơn @RafaelBarros)

Nếu chuỗi truy vấn cũng là cần thiết, sử dụng

header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); 
die; 
+5

đây là những gì tôi đang tìm kiếm, cảm ơn! – Mala

+6

Nếu chuỗi truy vấn cũng cần thiết, sử dụng 'header ('location:'. $ _ SERVER ['PHP_SELF']. '?'. $ _ SERVER ['QUERY_STRING']); thoát; '. –

+2

@RafaelBarros Cảm ơn vì điều đó, tôi đã chỉnh sửa câu trả lời của tôi để bao gồm đề xuất của bạn. –

17

Một số khác thanh lịch là

header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"); 
exit; 
5

Để thực sự được phổ biến, tôi sử dụng:

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' 
    || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://'; 
header('Location: '.$protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]); 
exit; 

Tôi thích $_SERVER[REQUEST_URI] vì nó resepcts mod_rewrite và/hoặc bất kỳ biến GET.

https phát hiện từ https://stackoverflow.com/a/2886224/947370

1
header('Location: '.$_SERVER['PHP_SELF']); 

cũng sẽ làm việc

-2

tôi sử dụng một cách chính xác trong localhost:

header('0'); 
+0

Điều này không tải lại trang. – rybo111

Các vấn đề liên quan