Chuyển hướng người dùng với PHP

0
(0)

Chuyển hướng người dùng với PHP

 

Đôi lúc người dùng sẽ gửi 1 yêu cầu và ta muốn chuyển hướng họ đến 1 trang khác trước hoặc sau khi xử lý. Ví dụ đơn giản như: khi người dùng điền vào form đăng ký để tạo tài khoản mới, form gửi theo method post đến file process_new_user.php, đoạn mã này, sau khi chạy thành công sẽ chuyển người dùng (đã đăng ký) đến trang welcome_new_user.php như sơ đồ:

Nếu ta muốn xử lý gì đó rồi sau đó chuyển người dùng đến 1 trang mới trong PHP thì có thể sử dụng hàm header. Hàm này cho phép chúng ta gửi trở lại cho máy người dùng những "HTTP header" để thực hiện những yêu cầu khác nhau. Nó có thể sử dụng nhiều loại header khác nhau, nhưng ta sẽ sử dụng header Location để giải quyết nhu cầu của mình. Ví dụ, ta có file process_new_user.php như sau

PHP Code:


    // Tao tai khoan moi voi thong tin trong $_POST 
    $processing_error create_new_user_account
        $_POST['username'], $_POST['fullname'], 
        $_POST['password']); 

    // Chuyen huong den trang moi neu khong co loi gi xay ra 
    if ($processing_error === FALSE
    { 
        header('Location: http://' $_SERVER['HTTP_HOST'
            . dirname($_SERVER['PHP_SELF']) 
            . '/welcome_new_user.php'); 
    } 
    else 
    { 
        // Co loi! Chuyen huong lai trang tao tai khoan 
        header('Location: http://' $_SERVER['HTTP_HOST'
            . dirname($_SERVER['PHP_SELF']) 
            . '/create_account.php?err=' 
            $processing_error); 
    } 
?>

Phải chú ý 1 điều quan trọng khi sử dụng hàm header là không được in ra bất cứ kí tự nào trước khi sử dụng hàm, nếu không sẽ báo lỗi! Đoạn mã sau chắc chắn sẽ báo lỗi:

PHP Code:


    header('Location: http://' $_SERVER['HTTP_HOST'
        . '/welcome2.php'); 
?>

Lý do báo lỗi vì có phần khoảng trắng trước . Nếu 1 trong các file bạn include vào cũng có khoảng trắng nằm ngoài phần mã PHP thì cũng sẽ gặp lỗi tương tự

Có 1 cách khác là sử dụng header META. Với cách này, bạn có thể yêu cầu trình duyệt tự động chuyển hướng tới 1 trang mới:

PHP Code:


    echo <<EOH 
<meta httpequiv='refresh' content='0; url="http://$_SERVER['HTTP_HOST']/welcome2.php"/> 
EOH; 
?>

Tuy nhiên cách này có 1 nhược điểm là nếu trình duyệt đã bị tắt chức năng này thì…. sẽ không có gì xảy ra hết! Nói chung, chúng ta sẽ thường sử dụng hàm header khi muốn chuyển hướng người dùng với PHP

End

 

Mr.paint(UDS)

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Related posts

Cách khắc phục Lỗi “Trang web này phía trước chứa các chương trình có hại” trong WordPress

Cách thêm thẻ tác giả Facebook trong WordPress

Cách sửa danh mục và số lượng bình luận sau khi nhập WordPress