up
down
Close
架站盒子
Web Development Box
 

JS 與 PHP 跳轉頁面的差別: location.href vs header

│ 2166 Views │ Mix PL

語法

<?php
echo '<script>location.href="/"</script>';
?>

<?php
header('Location: /');
?>

說明

以上兩種皆可跳轉至首頁。本篇僅討論讀取網頁原始碼的情況,如果用 PHP 去讀取其他網頁的標題,但網頁如果有判斷會員在沒有登入的情況下跳轉至首頁,假設使用 header 跳轉,由於一開始伺服器端就直接轉跳,那麼 PHP 就無法順利讀取該網頁的標題(除非放在標題下面),如果改用 JS 的 location.href 來做跳轉且沒有加上exit(),那麼無論放在前或後都能正常讀取網頁內容。

舉例:

用 a.php 寫了一段 php 程式去取得 b.php 的網頁標題,假設 b.php 使用 PHP 的 header 跳轉至首頁且放在標題之前,那麼 a.php 讀到的標題就會是首頁標題而不是 b.php 的標題,如果 b.php 使用 JS 的 location.href 來做跳轉,那麼 a.php 可以正確讀到 b.php 的標題。

執行程式部分

使用 JS 的 location.href 有可能仍會執行到該網頁的部分程式,如果希望某些程式不要被執行,可以加上 exit(); ,那麼在 exit(); 以下的程式將不會被執行。

舉例來說: <?php

// A程式碼
xxxxxxx
xxxxxxxxx

if(未登入){
echo '<script>location.href="/"</script>';
exit();
}

// B程式碼
xxxxxxx
xxxxxxxxx
?>

假設在未登入的情況下,則A程式碼會執行,B程式碼不會執行,該網頁會立即轉到首頁。如果要讀取網頁標題,標題的位置至少要在 exit(); 之前。

延伸閱讀

本文是否對您有幫助?