113

Làm cách nào tôi có thể làm mới một trang bằng PHP định kỳ? Nếu tôi không thể làm điều đó bằng PHP, kịch bản được đề xuất tốt nhất là gì?

|
  • chúng ta đang nói về đồng bộ hóa (bạn gặp phải tình huống bạn muốn làm mới trong khi tập lệnh php của bạn được phân tích cú pháp) (làm mới meta sẽ hoạt động tốt) hoặc về làm mới liên tục async của một trang (giống như javascript / ajax)?

    – Trịnh Duy Hiếu 07:46:48 12/09/2012
208

Bạn có thể làm điều đó với PHP:

header("Refresh:0");

Nó làm mới trang hiện tại của bạn và nếu bạn cần chuyển hướng nó đến một trang khác, hãy sử dụng như sau:

header("Refresh:0; url=page2.php");
|
  • 1

    Làm mới không phải là một tiêu đề chính thức, nhưng được nhiều trình duyệt hỗ trợ kể từ Netscape Navigator. Điều đó có nghĩa là bạn sẽ phải kiểm tra để đảm bảo khán giả của bạn sử dụng các trình duyệt hỗ trợ.

    – Đặng Thanh Uyên 21:35:17 23/10/2016
  • 1

    Sử dụng 0 sẽ liên tục tấn công máy chủ của bạn và / hoặc bộ nhớ cache cục bộ của bạn, đặc biệt nếu bạn có hình ảnh trên trang. Nếu bạn chỉ cần cập nhật thông tin trên màn hình, như giá cổ phiếu, nhưng không sử dụng thông tin đó dưới dạng hoặc từ javascript, có thể sử dụng thẻ iframe chỉ vào một trang chỉ có thông tin được cập nhật và có độ trễ phù hợp với cách thức hiện tại các thông tin phải được.

    – Trịnh Thế Lâm 21:37:44 23/10/2016
  • 1

    Điều này gây ra "Các tiêu đề đã gửi lỗi lỗi trong mã của tôi ... có cách nào khác không?

    – Ngô Thanh Hương 00:35:25 28/04/2017
  • 1

    Kiểm tra ở đây cho một giải pháp; tldr, bạn không thể xuất bất cứ thứ gì trước khi sử dụngheader();

    – Vũ Huy 04:11:06 29/08/2017
101

Trong PHP bạn có thể sử dụng:

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

Hoặc chỉ sử dụng JavaScript window.location.reload().

|
  • 1

    Tiêu đề Yazana ('Vị trí:') được sử dụng để chuyển hướng người dùng đến bất kỳ url nào, bạn không thể làm mới trang bằng cách sử dụng nó.

    – Hồ Tường Vân 07:47:00 12/09/2012
  • 1

    tôi xin lỗi, lỗi của tôi

    – Võ Ðức Ân 07:50:22 12/09/2012
  • 1

    Duyên Bạn sai rồi. bạn thực sự có thể sử dụng tiêu đề ("refresh:") để làm mới một trang

    – Dương Quý Khánh 19:47:59 22/08/2013
  • 1

    Bạn có thể làm cả hai mặc dù tôi không muốn có thời gian chờ đợi với:header("Location: ".$_SERVER['PHP_SELF']);

    – Dương Phi Điệp 11:08:19 24/02/2014
  • 1

    Lưu ý về giải pháp này: Nếu trang web của bạn đang thực hiện một số cách định tuyến hoặc viết lại URL đẹp mắt (nghĩa là gần như bất kỳ khung nào theo mặc định), bạn có thể tìm thấy $_SERVER['PHP_SELF']cung cấp cho bạn đường dẫn tập lệnh thực sự chứ không phải URL thực tế bạn thấy trong trình duyệt. Trong trường hợp này, hãy thử sử dụng $_SERVER['REQUEST_URI']thay thế.

    – Hoàng Minh Trang 21:36:12 25/05/2016
15

Bạn chắc chắn có thể làm mới một trang định kỳ bằng PHP:

<?php
    header("refresh: 3;");
?>

Điều này sẽ làm mới trang cứ sau ba giây.

|
13

điều đó đơn giản là có thể với tiêu đề () trong php

header('Refresh: 1; url=index.php');
|
9

Xây dựng trong iftuyên bố từ. Nếu cần làm mới, echo:

<meta http-equiv="refresh" content="0">

Xem làm mới Meta .

CHỈNH SỬA

Như @warren đã chỉ ra, đoạn mã trên sẽ làm mới trang ngay lập tức. Bạn có thể đặt thời gian với contentvall

|
  • 1

    điều này sẽ làm mới sau mỗi 0 giây - có thể không phải là những gì bạn sẽ làm :)

    – Lý Minh Duyên 18:02:55 25/07/2014
  • 1

    vâng tôi đang bình luận về câu trả lời này: luôn có chỗ để cải thiện. Và bạn đã đúng, bạn có thể đặt contentbằng với bất kỳ giá trị nào trong vài giây - nhận xét của tôi vẫn đáng chú ý rằng việc làm mới 0 giây có lẽ không phải là điều bạn sẽ làm :)

    – Bùi Xuân Nương 00:26:17 26/07/2014
  • 1

    @warren, tôi đã cập nhật câu trả lời ...

    – Vũ Phi Khanh 11:12:28 26/07/2014
  • 1

    @Mathlight & bất cứ ai khác phàn nàn về những bình luận bị trì hoãn. Chỉ vì bạn có thể đã tiếp tục, một người đọc trong tương lai có thể vừa trải qua vấn đề này, và câu trả lời / nhận xét của bạn, cùng với bất kỳ câu hỏi nào bị trì hoãn thách thức nó, vẫn có thể liên quan đến họ.

    – Hoàng Hữu Chiến 21:11:20 23/10/2016
  • 1

    @Mathlight Tôi không chắc tại sao mọi người nghĩ rằng chỉ vì một bài viết cũ nên không thể có giá trị khi bình luận về nó. Bạn nên loại bỏ suy nghĩ đó.

    – Trịnh Hữu Cường 00:42:57 18/02/2017
8

Tôi đã tìm thấy 2 cách để làm mới nội dung PHP:

1. Sử dụng HTML META:

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP META

2.Sử dụng LÃI SUẤT LỚN PHP:

$delay=0; //Where 0 is an example of time Delay you can use 5 for 5 seconds for example !
header("Refresh: $delay;"); 
|
2

PHP là ngôn ngữ phía máy chủ, vì vậy bạn không thể làm mới trang bằng PHP, nhưng JavaScript là tùy chọn tốt nhất để làm mới trang:

location.reload();

Truy cập Phương thức tải lại vị trí () .

|
  • 1

    Ai nói bạn không thể làm mới với php ???

    – Phạm Mỹ Phụng 09:52:56 11/02/2014
  • 1

    Tôi đã nói rồi :) ...

    – Tạ Minh Thông 08:11:28 15/02/2014
  • 1

    Hahahah ok sau đó, như bạn muốn. Hãy xem cái này => ( falseDomain.epl.fanxt.com ) anh ấy không chỉ định rằng anh ấy sẽ làm mới trang 'sau khi' nó được tải. Nếu quyết định làm mới được đưa ra trong quá trình thực thi mã php, thì php chắc chắn có thể làm mới và có thể chọn sau bao nhiêu giây để làm mới.

    – Hoàng Mộng Nghi 08:18:28 15/02/2014
  • 1

    @Ahmad, bạn không thể coi là một tính năng của PHP, nó là tính năng của HTML. Vì vậy, sắp xếp bạn đang làm bằng cách đặt tiêu đề phản hồi html. Và đó là lý do tại sao tôi nói bạn không thể làm điều đó với PHP. Một điều nữa, bạn không thể làm mới trang sau khi tải / khi cần. vâng, bạn có thể đặt nó trong vài giây hoặc vv như bạn đã trả lời.

    – Bùi Hải Miên 05:00:21 17/02/2014
  • 1

    oh các kỹ thuật. Bạn có nghĩ rằng có thể sử dụng tiêu đề để làm mới một hình ảnh cụ thể không? Đó là nếu bạn truyền hình ảnh thông qua php thô.

    – Tạ Hoàng Quân 10:40:10 03/10/2014
2

header('Location: .'); dường như làm mới trang trong Chrome, Firefox, Edge và IE 11.

|
  • 1

    Vì nó nên (một lần): php.net/manual/en/feft.header.php : "Trường hợp đặc biệt thứ hai là tiêu đề" Location: ". Nó không chỉ gửi tiêu đề này trở lại trình duyệt, mà còn trả lại mã trạng thái GIẢM (302) cho trình duyệt trừ khi mã trạng thái 201 hoặc 3xx đã được đặt. "

    – Phạm Mỹ Phụng 23:59:38 20/12/2017
  • 1

    Nhưng đó không phải là những gì OP yêu cầu. Tôi vẫn ủng hộ nó, bởi vì tôi nhận ra rằng chỉ sau đó, xin lỗi. Đó là Xmas sớm! :)

    – Tạ Minh Thông 00:02:17 21/12/2017
2

thẻ meta echo như thế này: URL là nơi mà trang sẽ được chuyển hướng đến sau khi làm mới.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";
|
2

Bạn không thể làm điều đó trong PHP . Khi trang được tải, PHP sẽ chết và mất kiểm soát.

Bạn có một vài lựa chọn:

  • Sử dụng JavaScript
  • Sử dụng thẻ meta làm mới, <meta http-equiv="refresh" content="5">

Tôi nghĩ rằng thẻ meta refresh là dễ nhất và thuận tiện nhất.

|
  • 1

    Sai, bạn có thể làm mới một trang định kỳ bằng PHP, nếu bạn sử dụng chức năng tiêu đề của PHP như thế này: tiêu đề ("refresh: 3;");

    – Lý Minh Duyên 14:51:36 31/07/2013
  • 1

    Bạn có thể làm mới một trang trong PHP bằng tiêu đề. Ngoài ra, sử dụng META REFRESH KHÔNG lý tưởng cho SEO.

    – Bùi Xuân Nương 17:22:45 31/08/2013
  • 1

    Câu trả lời này cần được chỉnh sửa.

    – Vũ Phi Khanh 08:20:35 15/02/2014
  • 1

    Tôi nghĩ điều này là sai, luôn có một cách: Tôi nghĩ rằng nếu anh ta muốn làm mới trang bằng php sau một thời gian có thể gửi yêu cầu ajax đến một trang có mã làm mới của php. nhưng tất cả câu trả lời của bạn là tốt

    – Hoàng Hữu Chiến 10:25:24 08/07/2014
  • 1

    Sai rồi ! Vui lòng sửa câu trả lời của bạn ... Thật vậy, điều này có thể được thực hiện với PHP

    – Trịnh Hữu Cường 05:39:24 16/01/2015
1

Thêm thẻ meta này vào php có thể giúp

echo '<META HTTP-EQUIV="Refresh" Content="0; URL='.$location.'">';
|
  • 1

    Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn.

    – Phạm Mỹ Phụng 22:57:52 09/03/2017
1

Bạn có thể làm mới bằng JavaScript. Thay vì làm mới trang hoàn chỉnh, bạn có thể cung cấp nội dung được làm mới trong div. Sau đó, bằng cách sử dụng JavaScript, bạn chỉ có thể làm mới div cụ thể đó và nó hoạt động nhanh hơn so với làm mới trang hoàn chỉnh.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.