2010-03-30 85 views
29

Tôi đang sử dụng biểu mẫu để "Xếp hạng" một trang. Biểu mẫu này "đăng" dữ liệu lên một tập lệnh php ở nơi khác. Tôi chỉ muốn hiển thị một liên kết sau khi biểu mẫu được xử lý sẽ đưa người dùng trở lại trang trước. Tôi có thể làm điều này bằng cách sử dụng javascript trong kịch bản php của tôi?Quay lại trang trước

GF

Trả lời

72

Bạn có thể sử dụng một liên kết để gọi history.go(-1) trong Javascript, mà chủ yếu là tương đương với cách nhấn vào nút Back. Lý tưởng nhất, tuy nhiên, tốt hơn là chỉ cần tạo một liên kết quay lại URL từ khi người dùng được đăng lên biểu mẫu - theo cách đó, "lưu lượng" lịch sử được giữ nguyên và người dùng không tự hỏi tại sao họ có thứ gì đó để nhấp vào "Chuyển tiếp" mà thực sự chỉ cần gửi lại biểu mẫu.

+0

làm thế nào để sử dụng một liên kết để gọi rằng mảnh javascript? –

+4

link text here... sẽ không hoạt động khi người dùng đã xóa lịch sử bằng cách xóa bộ nhớ cache ... – user1400915

3

Nếu máy chủ web của bạn chính xác redirects bạn đến một trang mới sau khi bạn tạo bài đăng, nút "quay lại" thông thường trên trình duyệt sẽ hoạt động. Hoặc "history.go (-1)" trong javascript. Điều này sẽ tạo ra một biểu mẫu điền.

Tuy nhiên, nếu máy chủ chỉ trả về nội dung mới mà không chuyển hướng - thì history.go (-1) sẽ không giúp bạn. Vào thời điểm đó bạn đã mất biểu mẫu của bạn.

Nếu bạn chỉ muốn quay lại url trước đó - chỉ cần liên kết đến nó bằng một thẻ A HREF. Điều đó sẽ cho bạn thấy một hình thức trống.

+0

PHP có thể tạo chuyển hướng bất kể máy chủ web. –

+1

Đúng, nhưng PHP chạy trên máy chủ. Tôi đang nói về client-server, không phải phần mềm nào chạy trên máy chủ. – drozzy

30

Phụ thuộc vào những gì bạn đang cố gắng thực hiện. Bạn có thể sử dụng một cái gì đó như thế này:

echo "<a href=\"javascript:history.go(-1)\">GO BACK</a>"; 

Đó là tùy chọn đơn giản nhất. Các poster khác là đúng về việc có một dòng chảy lịch sử thích hợp nhưng đây là một ví dụ cho bạn.

Chỉ cần chỉnh sửa, phiên bản orig không được thụt vào và trông giống như không có gì. ;)

+0

@dscher Câu trả lời hoàn hảo bro, tôi đã tìm kiếm một cái gì đó như thế này và may mắn tìm thấy câu trả lời của bạn. – V15HM4Y

21

Bạn đặc biệt yêu cầu các giải pháp JS, nhưng trong trường hợp ai đó truy cập hình thức của bạn với JS vô hiệu hóa một bản sao lưu PHP luôn luôn là tốt đẹp:

khi tải hình thức lấy địa chỉ trang trước qua một cái gì đó giống như $previous = $_SERVER['HTTP_REFERER']; và sau đó thiết lập đó là <input type="hidden" value="$previous" /> trong biểu mẫu của bạn. Khi bạn xử lý biểu mẫu của mình bằng tập lệnh, bạn có thể lấy giá trị đó và dán vào giá trị header("Location:___") hoặc dán trực tiếp địa chỉ vào liên kết để gửi lại địa chỉ đến từ số

Không JS, khá đơn giản và bạn có thể cấu trúc nó để nó chỉ được xử lý nếu máy khách không bật JS.

+0

Không phải HTTP_REFERRER có dễ bị tấn công do tiêm không? Có vẻ như nó sẽ như thế. Tôi thích rằng nó không dựa trên JS, nhưng tìm kiếm URL hợp lệ có vẻ như rắc rối. Phiên bản JS trông an toàn hơn với tôi. – blindsnowmobile

24

Hãy thử điều này:

$previous = "javascript:history.go(-1)"; 
if(isset($_SERVER['HTTP_REFERER'])) { 
    $previous = $_SERVER['HTTP_REFERER']; 
} 

trong html:

<a href="<?= $previous ?>">Back</a> 

mã JavaScript là khởi tạo như dự phòng cho HTTP_REFERER biến đôi khi không làm việc.

+2

Tôi thực sự yêu câu trả lời của bạn nhiều hơn nữa! giải pháp này sẽ chuyển hướng mà không có thông báo bật lên có nội dung "Gửi lại biểu mẫu" hoặc bất kỳ thứ gì. +1 –

8

Như thế này:

<?php 

    if (isset($_SERVER["HTTP_REFERER"])) { 
     header("Location: " . $_SERVER["HTTP_REFERER"]); 
    } 

?> 
5

Chúng tôi có thể hiển thị một nút quay lại sử dụng mã html trong trang của chúng tôi có thể mất các cửa sổ trình duyệt lại trang trước. Trang này sẽ có một nút hoặc một liên kết và bằng cách nhấp vào trình duyệt sẽ trở về trang trước đó. Điều này có thể được thực hiện bằng cách sử dụng html hoặc bằng cách sử dụng JavaScript ở phía máy khách.

Đây là mã của nút này

<INPUT TYPE="button" VALUE="Back" onClick="history.go(-1);"> 

Sử dụng JavaScript

Chúng ta có thể sử dụng JavaScript để tạo một liên kết để đưa chúng ta trở lại trang trước hoặc lịch sử. Đây là mã để di chuyển trở lại trình duyệt bằng JavaScript phía máy khách.

<a href = "javascript:history.back()">Back to previous page</a> 
1

Tôi nghĩ nút onclick = "history.back();" là một cách để giải quyết vấn đề. Nhưng nó có thể không hoạt động trong các trường hợp sau:

1.Nếu trang được làm mới hoặc tải lại. 2.Nếu người dùng mở liên kết trong một trang mới.

Để khắc phục những điều này, bạn có thể sử dụng mã sau nếu biết mình phải quay lại trang nào. Ví dụ. Nếu bạn không có liên kết trên một trang và nút quay lại sẽ được sử dụng để quay lại trang đó.

< loại đầu vào = "nút" onclick = "document.location.href = 'filename';" value = "Back" name = "nút" class = "btn">

2

... Bằng cách nhìn vào mã Facebook ... Tôi thấy điều này

Go Back to Previous Page

0

Có lẽ cuối cho câu trả lời này, nhưng chỉ trong HTML thuần túy bạn nhất luôn có thể sử dụng ./

<a href="./">Return</a>

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