Hướng dẫn php redirect with error message - chuyển hướng php với thông báo lỗi

Tôi có một biểu mẫu đăng nhập trên trang web của mình kiểm tra tên người dùng/mật khẩu đã gửi. Nếu không có khớp, người dùng sẽ được gửi trở lại trang đăng nhập và thông báo lỗi thích hợp được hiển thị. Lời kêu gọi chuyển hướng này là:

header("location:../login.php?error_message=$error_message");

Điều này hoạt động tốt, nhưng nó trông lộn xộn trong thanh địa chỉ của trình duyệt (đặc biệt là với các thông báo lỗi mô tả). Có cách nào để thực hiện chuyển hướng tự động này mà không cần sử dụng biến $ _GET không? Tôi đã xem xét sử dụng biến $ _Session, nhưng điều đó dường như không phải là thực hành mã hóa tốt nhất.

Cảm ơn vì đã đọc.

Đã hỏi ngày 26 tháng 3 năm 2013 lúc 10:46Mar 26, 2013 at 10:46

Hướng dẫn php redirect with error message - chuyển hướng php với thông báo lỗi

7

Điều gì về việc có một biến đơn giản hơn?

// something.php
header ("Location: foo.php?err=1");

Và sau đó trong trang xử lý các lỗi:

// foo.php
$errors = array (
    1 => "Hello, world!",
    2 => "My house is on fire!"
);

$error_id = isset($_GET['err']) ? (int)$_GET['err'] : 0;
if ($error_id != 0 && in_array($error_id, $errors)) {
    echo $errors[$error_id];
}

Hi vọng điêu nay co ich.

Đã trả lời ngày 26 tháng 3 năm 2013 lúc 10:51Mar 26, 2013 at 10:51

Mishmashmishmashmishmash

4.6593 Huy hiệu vàng32 Huy hiệu bạc56 Huy hiệu Đồng3 gold badges32 silver badges56 bronze badges

2

Nếu bạn không muốn sử dụng các phiên, bạn có thể sử dụng mã lỗi thay thế: thay vào đó:

header('Location: ../login.php?error=' . urlencode($error_code));

Sau đó, bên trong login.php:

if (isset($_GET['error'])) {
    switch ($_GET['error']) {
        case 123: // ...
            break;
    }
}

Thay vì một công tắc cồng kềnh, thay vào đó, bạn có thể sử dụng mảng tra cứu cho các thông báo lỗi (có thể phụ thuộc vào ngôn ngữ).

BTW, sử dụng URI tương đối trong các chuyển hướng tiêu đề của bạn không được khuyến nghị, một URI tuyệt đối (ví dụ: /login.php) hoặc URI đủ điều kiện (ví dụ: http://example.org/login.php) được ưu tiên.

Đã trả lời ngày 26 tháng 3 năm 2013 lúc 10:52Mar 26, 2013 at 10:52

Ja͢ckja͢ckJa͢ck

168K36 Huy hiệu vàng256 Huy hiệu bạc 305 Huy hiệu Đồng36 gold badges256 silver badges305 bronze badges

1

Đối với xác thực biểu mẫu, bạn có 3 tùy chọn:

  1. Sử dụng AJAX để xác thực - vì vậy, sẽ không cần phải chuyển hướng.
  2. Sử dụng chuyển hướng và phiên để lưu trữ thông báo lỗi cùng với dữ liệu đã nhập.along with entered data.
  3. Sử dụng chuyển hướng như một phần của bài đăng/chuyển hướng/nhận patterm

Cá nhân tôi sẽ thực hiện (1) và (3) cho các biểu mẫu của tôi. (1) để thuận tiện cho người dùng thông thường và (3) để tương thích ngược với các hoang tưởng như tôi.

Sử dụng các phiên thực sự là một cách sạch nhất cho các xác nhận dựa trên Redirec, vì nó sẽ không để lại trang được đăng trong lịch sử trong mọi trường hợp. Tuy nhiên, với sự hiện diện của xác thực dựa trên Ajax, nó có vẻ hơi quá mức

Đã trả lời ngày 26 tháng 3 năm 2013 lúc 10:57Mar 26, 2013 at 10:57

Hướng dẫn php redirect with error message - chuyển hướng php với thông báo lỗi

Ý thức chung thông thường của bạnYour Common Sense

156K39 Huy hiệu vàng209 Huy hiệu bạc331 Huy hiệu Đồng39 gold badges209 silver badges331 bronze badges

1

Sử dụng phiên là một lựa chọn tốt. Bạn có thể xóa giá trị phiên ngay khi bạn hiển thị lỗi. Nhưng nếu bạn không muốn sử dụng phiên, bạn có thể sửa đổi URL của mình như sau.

// login failed
header("location:../login.php?status=0");

Tôi thích sử dụng phiên.

Đã trả lời ngày 26 tháng 3 năm 2013 lúc 10:51Mar 26, 2013 at 10:51

MishmashmishmashMahendra

4.6593 Huy hiệu vàng32 Huy hiệu bạc56 Huy hiệu Đồng1 gold badge15 silver badges38 bronze badges

Các tiêu đề có thể được thay thế bằng một mục khác miễn là không có gì được gửi đến trình duyệt

PHP chuyển hướng đến một trang khác trên cùng một trang web hoặc khác nhau được xử lý bởi các tiêu đề PHP. & NBSP; Tiêu đề PHP () gửi tiêu đề HTTP thô mà & nbsp; được sử dụng để chuyển hướng các trang PHP đến các vị trí khác cùng với một số chức năng khác

Cú pháp tiêu đề PHP: & NBSP;

Tiêu đề (Chuỗi $ Tiêu đề [, bool $ thay thế = true [, int $ http_response_code]]): void void

Tiêu đề là chuỗi tiêu đề là ‘vị trí: đối với chuyển hướng PHP và nó gửi các tiêu đề trở lại trình duyệt. is the header string which is ‘Location:’ for php redirect and it sends headers back to browser.

Thay thế tham số là đúng theo mặc định, nhưng có thể sai nếu bạn muốn gửi nhiều tiêu đề và không muốn thay thế tiêu đề gửi bằng cách đầu tiên. parameter is TRUE by default, but can be FALSE if you want to send multiple headers and don’t want to replace send header with first.

Mã phản hồi - Mã phản hồi mặc định là 302, – default response code is 302,

Các trình duyệt và công cụ tìm kiếm đối xử với mã phản hồi này một cách khác nhau, các công cụ tìm kiếm sẽ chuyển 301 khi chuyển sang trang mới và xếp hạng trang cập nhật, điều này có thể giúp duy trì cùng một thứ hạng tìm kiếm cho trang. Các trình duyệt sử dụng mã 30x để xác định thời gian hoặc số lượng bộ đệm cho các trang này. Thật hợp lý khi chỉ định mã trạng thái rõ ràng cho chuyển hướng PHP tùy thuộc vào các yêu cầu.

Thiết lập tiêu đề chuyển hướng PHP

Chuyển hướng tiêu đề PHP có thể được thiết lập như trong ví dụ sau với các tham số mặc định.

Sử dụng chuyển hướng như một phần của bài đăng/chuyển hướng/nhận patterm
header(“Location: http://example.com”);
exit;
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

Sử dụng chuyển hướng như một phần của bài đăng/chuyển hướng/nhận patterm
header(“Location: http://example.com”,TRUE,301);
exit;
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

Sử dụng chuyển hướng như một phần của bài đăng/chuyển hướng/nhận patterm
header(“Location: /page2.php”);
exit
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.

URL tương đối trong chuyển hướng PHP
$url .= rtrim(dirname($_SERVER[‘PHP_SELF’]), ‘/\\’); // Get current directory
$url .= ‘/relative/path/to/page/’; // relative path
header(‘Location: ‘ . $url, TRUE, 302);

Các URL chuyển hướng có thể được xây dựng bằng các biến môi trường PHP như trong ví dụ sau:

$ url = ‘http: //. $ _Server [‘http_host,]; // Nhận máy chủ $ url. = Rtrim (dirname ($ _ server [‘php_elf,]),‘/\\,); // Nhận thư mục hiện tại $ url. = ‘/Tương đối/đường dẫn/đến/trang/ // Tiêu đề đường dẫn tương đối (‘Vị trí:‘. $ url, true, 302);

Sử dụng chuyển hướng như một phần của bài đăng/chuyển hướng/nhận patterm
session_start();

hoặc bằng cách chỉ định các tham số tùy chỉnh
{
header(“location:../”);
exit();
}

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web
?>

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.

URL tương đối trong chuyển hướng PHP

Các URL chuyển hướng có thể được xây dựng bằng các biến môi trường PHP như trong ví dụ sau:

header(“Location: /page2.php”);
exit
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.

URL tương đối trong chuyển hướng PHPNOT correct, notice the placement of colon,

header(“Location : http://example.com”);
exit;
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

header(“Location: http://example.com”);
exit
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

header(“location: page1.php”);
header(“location: page2.php”); //replaces page1.php
exit;
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

header(“location: page1.php”);
echo “moving to page 2”
header(“location: page2.php”); //replaces page1.php
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.

header( “refresh:5;url=/page6.php” );
echo ‘Redirecting in 5 secs. Click here to go directly here.’;
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.

URL tương đối trong chuyển hướng PHP

ob_start(); //this has to be the first line of your page
header(‘Location: page2.php’);
ob_end_flush(); //this has to be the last line of your page
?>

hoặc bằng cách chỉ định các tham số tùy chỉnh

URL có thể liên quan đến miền gốc nếu là & nbsp; được chuyển hướng đến cùng một trang web

Hàm thoát sau khi chuyển hướng là đảm bảo thực hiện thêm các điểm dừng và tồn tại tập lệnh PHP.
window.location = “http:/example.com/”
’;

Làm thế nào để bạn chuyển hướng trên một trang khác nếu xảy ra lỗi trên mã của bạn?

Trong PHP, bạn không chuyển hướng khi có lỗi trong mã, bạn chỉ cần nắm bắt lỗi đó và sau đó bạn thực hiện bất kỳ hành động nào bạn cho là cần thiết. Để bắt các lỗi trong mã, bạn phải xác định trình xử lý lỗi tùy chỉnh, sử dụng set_error_handler.catch that error and then you take whatever actions you consider necessary. In order to catch the errors in the code, you must define a custom error handler, using set_error_handler.

Làm thế nào để tự động chuyển hướng PHP?

Php 301 Chuyển hướng để đặt chuyển hướng PHP vĩnh viễn, bạn có thể sử dụng mã trạng thái 301. Vì mã này cho biết chuyển hướng không xác định, trình duyệt tự động chuyển hướng người dùng bằng URL cũ sang địa chỉ trang mới.use the status code 301. Because this code indicates an indefinite redirection, the browser automatically redirects the user using the old URL to the new page address.

Làm thế nào để chuyển hướng vào một trang khác trong PHP?

Trong PHP, khi bạn muốn chuyển hướng người dùng từ trang này sang trang khác, bạn cần sử dụng hàm Header ().Hàm tiêu đề cho phép bạn gửi tiêu đề vị trí HTTP thô, thực hiện chuyển hướng thực tế như chúng ta đã thảo luận trong phần trước.use the header() function. The header function allows you to send a raw HTTP location header, which performs the actual redirection as we discussed in the previous section.

Tại sao PHP không chuyển hướng đến một trang khác?

Khắc phục tiêu đề PHP không chuyển hướng điều này thường xảy ra do lỗi với bộ đệm đầu ra.Nếu chúng ta sử dụng tiêu đề (vị trí của người khác: Vị trí) ;, thì cần phải sử dụng ob_start ();sớm hơn trong kịch bản.Hàm ob_start () sẽ bật bộ đệm đầu ra.This generally happens due to an error with output buffering. If we use header(“Location: “);, then it is necessary to use ob_start(); earlier in the script. ob_start() function will turn the output buffering ON.