2011-09-19 28 views
0

我想根據組合框中選定的字符串重定向到其他頁面。使用開關盒更改php頭

我已經添加下面的代碼:

switch ($downloadType){ 
    case "text1": 
     header("Location:pdf/text1.pdf"); 
     break; 
    case "text2": 
     header("Location:pdf/text2.pdf"); 
    case "text3": 
     header("Location:pdf/text3.pdf"); 
    default: 
     header("Location:index.html"); 
} 

但是這個簡單的腳本不能正常工作。我是新來的PHP。你有什麼想法,爲什麼我不能改變標題。是否像我們無法使用開關式語句更改標題?

如果不是這樣的話,那麼在表單提交中重定向到另一個頁面的可能方式是什麼?

+0

歡迎堆棧溢出。您可以使用工具欄按鈕格式化源代碼。這次我爲你做了。 –

回答

3

您需要添加一箇中斷;到每個案件的結尾。

case "text3": 
    header("Location:pdf/text3.pdf"); 
    break; 
+0

@Shruti:喬恩是對的。在發送期望的頭部之後,也不要忘記'exit()'。 – dnagirl

+0

非常感謝!我有另一個查詢是..我想在新窗口,而不是相同的窗口打開PDF ...如何打開新窗口表單提交在PHP ..我不能在這裏使用的行動是正確的? – Shruti

+0

PHP是服務器端,所以無法打開一個新窗口。你可以做到這一點是JavaScript,或者我認爲只是在錨中使用一個目標。無論哪種方式,如果你被卡住了,最好爲它打開一個單獨的問題。 –

1

您需要添加破:

switch ($downloadType){ 
case "text1": 
    header("Location:pdf/text1.pdf"); 
    break; 
case "text2": 
    header("Location:pdf/text2.pdf"); 
    break; 
case "text3": 
    header("Location:pdf/text3.pdf"); 
    break; 
default: 
    header("Location:index.html"); 
} 
0

你必須看到switch語句排序跳轉到構建的。根據評估的表達式的值,代碼執行跳轉到第一個合適的casedefault語句,並從那裏繼續。這就是爲什麼大多數時候你會想插入break聲明。目前,您只能在"text1"的情況下執行此操作。

除此之外,建議您在撰寫Location HTTP標頭時使用完整的URL,即使相對URL通常按預期工作。 HTTP規範並不真正允許相對URL。

header('Location: http://example.com/foo/pdf/text2.pdf'); 

並且不要忘記發送HTTP頭不會停止腳本執行。完成後添加exit;聲明。

-1

除了完成帶斷點的case語句之外,還要記住在發送任何實際輸出之前必須調用header()。

E.g:

<html> 
<?php 
header("Location:pdf/text2.pdf");?> 
</html> 

就不行,因爲「<html>」行會已經被髮送到客戶端,排除了用頭()。基本上,在嘗試調用header()之前,請確保文件中沒有輸出。

編輯: 編號:http://php.net/manual/en/function.header.php

+0

-1?我錯了嗎?完全可能。 – ParoXoN