在 PHP 中,跳轉是非常常見的操作。跳轉就是指在某個頁面上點擊鏈接或按鈕,然后跳轉到另外一個頁面或者刷新當前頁面。PHP 中的跳轉主要由兩種,一種是直接跳轉,另一種是條件跳轉。下面我們就來詳細介紹一下這兩種跳轉。
直接跳轉
直接跳轉就是指不需要任何條件,直接跳轉到指定的頁面。我們可以通過 header 函數實現直接跳轉。具體用法如下:
<?php header("Location: http://www.example.com"); exit; ?>在這段代碼中,使用了 header 函數,將頁面跳轉到了 http://www.example.com 這個地址。注意,跳轉完成后,需要使用 exit 函數退出程序,否則程序會繼續執行下去。 再來看一個例子,假如我們要將頁面跳轉到當前目錄下的 test.php 文件,可以這樣寫:
<?php header("Location: test.php"); exit; ?>我們同樣使用了 header 函數,這次跳轉的地址是相對地址。同樣要注意的是,跳轉完成后必須使用 exit 函數退出程序。 條件跳轉 條件跳轉就是指需要滿足一定條件才會跳轉的操作。最常使用的條件跳轉就是表單驗證。比如用戶登陸功能,如果用戶名或密碼為空或錯誤,就需要返回登錄頁面并給出相應的提示信息。下面我們來看一個例子。 先來看一下登錄頁面的代碼:
<html> <head><title>登錄頁面</title></head> <body> <form action="login.php" method="post"> 用戶名:<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="登錄"> </form> </body> </html>在這段代碼中,我們使用了 form 標簽來創建一個登陸表單。表單的提交地址是 login.php。 下面來看一下 login.php 文件的代碼:
<?php $username = $_POST['username']; $password = $_POST['password']; if(empty($username) || empty($password)) { header("Location: login.php?error=empty"); exit; } if($username !== "admin" || $password !== "123456") { header("Location: login.php?error=incorrect"); exit; } // 登陸成功,跳轉到首頁 header("Location: index.php"); exit; ?>首先,我們使用 $_POST 數組獲取了用戶提交的用戶名和密碼。如果用戶名或密碼為空,就跳轉回登錄頁面,并添加參數 error=empty。如果用戶名或密碼錯誤,就同樣跳轉回登錄頁面,但參數改成了 error=incorrect。 如果用戶名和密碼都正確,就跳轉到首頁 index.php。 在登錄頁面中,我們還需要添加一些判斷邏輯,用于對錯誤消息的展示。例如:
<?php if(isset($_GET['error'])) { switch($_GET['error']) { case 'empty': echo "<p>用戶名和密碼不能為空!</p>"; break; case 'incorrect': echo "<p>用戶名或密碼錯誤!</p>"; break; default: break; } } ?>在這段代碼中,我們使用了 switch 語句來展示相應的錯誤消息。如果 error 參數的值是 empty,就輸出“用戶名和密碼不能為空!”;如果是 incorrect,就輸出“用戶名或密碼錯誤!”。注意,這段代碼必須放在 HTML 表單的前面或者后面,才能及時展示錯誤信息。 總結 跳轉是 PHP 開發中應用最廣泛的功能之一。直接跳轉和條件跳轉都有各自對應的使用場景。在實際編程中,我們還需要對跳轉產生的一些問題多加注意,例如頁面重定向、跨站腳本攻擊等。