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
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ụ: //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:
- Sử dụng AJAX để xác thực - vì vậy, sẽ không cần phải chuyển hướng.
- 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.
- 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
Ý 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: //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: //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 = ‘ //. $ _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:
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,
hoặc bằng cách chỉ định các tham số tùy chỉnh
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
hoặc bằng cách chỉ định các tham số tùy chỉnh
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.
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
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 = “/example.com/”
’;